工作表位置超出范围。连接关闭。使用 EPPLUS 时

Worksheet position out of range. Connection Closed. When using EPPLUS

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

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

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

First is no longer a definition.

所以我尝试通过名称访问第一个作品sheet,并通过此方法workBook.Worksheets[1] 同时使用 0 和 1 来尝试获取第一个 sheet。

我的代码:

    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    
}}

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

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

以下是我(使用 LibreOffice Calc)启用电子表格阅读的方法:

  1. 创建电子表格的副本
  2. 在 LibreOffice 中打开
  3. 列表项
  4. 点击左上角的drodpwon 定义范围。通常读取 "A1"
  5. Select "Manage Names"
  6. 突出显示整个列表
  7. 点击"Delete"

完成这些步骤后,我 saved/closed 电子表格并能够使用 EPPlus 打开它。

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

var oSheet = package.Workbook.Worksheets["My Worksheet Name"];

要获得第一个 sheet 只需使用以下代码

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

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

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

我用过

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

这是因为 sheet 可能没有已知名称,现在您对第一个 sheet

感兴趣

您可以从零开始索引,它会起作用。

ExcelWorksheet ws = workBook.Worksheets[0];