使用EPPlus
我将数据写入多个工作表。如果未创建工作表,我将添加工作表,否则我将检索已使用的行并从该行添加数据并保存
FileInfo newFile = new FileInfo("Excel.xlsx");
using (ExcelPackage xlPackage = new ExcelPackage(newFile))
{
var ws = xlPackage.Workbook.Worksheets.FirstOrDefault(x => x.Name == language.Culture);
if (ws == null)
{
worksheet = xlPackage.Workbook.Worksheets.Add(language.Culture);
//writing data
}
else
{
worksheet = xlPackage.Workbook.Worksheets[language.Culture];
colCount = worksheet.Dimension.End.Column;
rowCount = worksheet.Dimension.End.Row;
//write data
}
worksheet.Cells[worksheet.Dimension.Address].AutoFitColumns();
xlPackage.Save();
而且效果很好。
现在我想检索 excel 中每张工作表的列名,LinqToExcel
这是我的代码
string sheetName = language.Culture;
var excelFile = new ExcelQueryFactory(excelPath);
IQueryable<Row> excelSheetValues = from workingSheet in excelFile.Worksheet(sheetName) select workingSheet;
string[] headerRow = excelFile.GetColumnNames(sheetName).ToArray();
在标题行它给我一个异常
An OleDbException exception was caught
External table is not in the expected format.
但我不想使用 Oledb 并想使用 Linq To Excel。
注意:当我使用单张而不是多张时,它可以正常工作并检索所有列。我哪里错了。