Переименуйте имя листа Excel в C # - PullRequest
1 голос
/ 14 июля 2011

VS 2008 / C #.

При прохождении пути к файлу электронной таблицы мне нужно переименовать лист.

Как переименовать Лист1 Листа Excel в "ABC".

Мы экспортируем лист Excel в базу данных SQL. Записи в листе Excel редактируются и обновляются вручную конечным пользователем. Значения столбцов могут иметь разные типы данных.

По умолчанию у Spread Sheet будет три листа: Sheet1, Sheet2, Sheet3.

Конечные пользователи, обычно работают на Листе1. Нам нужно сохранить статическое имя для этого Sheet1, что поможет нам экспортировать Sheet1 в базу данных SQL.

Если мы переименовали Лист1 в ABC, мы сохраняем то же имя. Мы не можем экспортировать лист по умолчанию, как это. Потому что конечные пользователи могут изменить свое имя или придерживаться имени по умолчанию.

Чтобы избежать путаницы, мы решили переименовать Лист1 в Таблице.

1 Ответ

6 голосов
/ 18 июля 2011

C # 3.0

using Microsoft.Office.Interop.Excel;

Тогда

object oMissing = System.Reflection.Missing.Value;

Microsoft.Office.Interop.Excel.ApplicationClass xl = new Microsoft.Office.Interop.Excel.ApplicationClass();

Microsoft.Office.Interop.Excel.Workbook xlBook;
Microsoft.Office.Interop.Excel.Worksheet xlSheet;

string laPath = System.IO.Path.GetFullPath("C:\\ExcelSheet.xls");
xlBook = (Workbook)xl.Workbooks.Open(laPath, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing);

xlSheet = (Worksheet)xlBook.Worksheets.get_Item(1);
xlSheet.Name = "CIAO";
xlBook.Save();
xl.Application.Workbooks.Close();

C # 4.0 +

Разница: не более System.Reflection.Missing.Value и использование DLR (Dynamic Language Runtime)

using System.IO;

using Excel = Microsoft.Office.Interop.Excel;
using Word = Microsoft.Office.Interop.Word;

Тогда

var excelFile = Path.GetFullPath("C:\\ExcelSheet.xls");
var excel = new Excel.Application();
var workbook = excel.Workbooks.Open(excelFile);
var sheet = (Excel.Worksheet)workbook.Worksheets.Item[1]; // 1 is the first item, this is NOT a zero-based collection
sheet.Name = DateTime.Now.ToString("yyyyMMddHHmmss");
workbook.Save();
excel.Application.Workbooks.Close();
...