11

我正在尝试使用 EPPLUS 4.0.3 打开一个 XLSX 文件作为模板(我什至使用了一个空白的 XLSX 文件)。

如果我不打开模板文件(空白或真实文件)而只是创建一个新工作簿并创建一个工作表,它可以正常工作。或者,如果我打开模板文件并创建一个新的工作表,那么它工作正常。只有当我尝试访问模板中的第一张工作表时,才会收到错误:工作表位置超出范围。

像这样访问第一个工作表:workBook.Worksheets.First()不起作用。

首先不再是一个定义。

所以我尝试按名称访问第一个工作表,并通过这种方法workBook.Worksheets[1]使用 0 和 1 来尝试获取第一个工作表。

我的代码:

    var existingTemplate = new FileInfo(_ExcelTemplateFilePath);
    using (ExcelPackage p = new ExcelPackage(existingTemplate)) {
    // Get the work book in the file
    ExcelWorkbook workBook = p.Workbook;
    ExcelWorksheet ws = workBook.Worksheets[1];
    // MY OTHER EXCEL CELL CODE HERE    
}}

有谁知道如何访问第一张和 Excel 文件?

4

4 回答 4

13

我能够通过按名称而不是索引来引用工作表来解决这个问题。

var oSheet = package.Workbook.Worksheets["My Worksheet Name"];
于 2016-04-11T17:49:01.810 回答
7

要获得第一张纸,只需使用以下代码

    var xlWorkbook = new ExcelPackage(new FileInfo(@"C:\ESD\EXCELDATAREADTEST.xlsx"));

ExcelWorksheet workSheet = xlWorkbook.Workbook.Worksheets[1];

只需确保您指向工作簿的正确位置

于 2016-07-27T21:54:25.423 回答
1

我刚刚遇到了同样的问题,问题是 EPPlus 在具有命名范围的电子表格上阻塞。

这是我所做的(使用 LibreOffice Calc)来读取电子表格:

  1. 创建电子表格的副本
  2. 在 LibreOffice 中打开
  3. 项目清单
  4. 单击左上角的 drodpwon 以定义范围。通常读作“A1”
  5. 选择“管理名称”
  6. 突出显示整个列表
  7. 点击“删除”

完成这些步骤后,我保存/关闭了电子表格,并能够使用 EPPlus 打开它。

于 2015-04-21T18:45:32.437 回答
1

我用了

var currentSheet = package.Workbook.Worksheets;
var workSheet = currentSheet.First();

这是因为工作表可能没有已知名称,现在您对第一张工作表感兴趣

于 2020-03-02T11:39:43.540 回答