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

时间:2015-04-21 14:27:18

标签: excel worksheet-function epplus worksheet epplus-4

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

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

访问第一个工作表: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 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:5)

获取第一张表只使用下面的代码

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

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

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

答案 2 :(得分:0)

我遇到了同样的问题,麻烦的是EPPlus在带有命名范围的电子表格上窒息。

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

  1. 创建电子表格的副本
  2. 在LibreOffice中打开
  3. 列表项
  4. 单击左上角的drodpwon以定义范围。通常读取" A1"
  5. 选择"管理名称"
  6. 突出显示整个列表
  7. 点击"删除"
  8. 完成这些步骤后,我保存/关闭了电子表格,并可以使用EPPlus打开它。

答案 3 :(得分:0)

我用过

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

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