Переименуйте имя листа Excel в C#
VS 2008 / C#.
Передав путь к файлу электронной таблицы, мне нужно переименовать лист.
Как переименовать Sheet1 листа Excel в "ABC".
Мы экспортируем лист Excel в базу данных SQL. Записи в листе Excel редактируются и обновляются вручную конечным пользователем. Значения столбцов могут иметь разные типы данных.
По умолчанию Spread Sheet будет иметь три листа: Sheet1, Sheet2,Sheet3.
Конечные пользователи, как правило, работают на Sheet1. Нам нужно сохранить статическое имя для этого Sheet1, что поможет нам экспортировать Sheet1 в базу данных SQL.
Если мы переименовали Sheet1 в ABC, мы сохраним то же имя. Мы не можем экспортировать лист по умолчанию, как это. Потому что конечные пользователи могут изменить свое имя или придерживаться имени по умолчанию.
Чтобы избежать путаницы, мы решили переименовать Sheet1 в Spread Sheet.
1 ответ
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 (динамического языка 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();