【问题标题】:Unable to delete a worksheet using EPPlus无法使用 EPPlus 删除工作表
【发布时间】:2014-12-23 12:03:24
【问题描述】:

我正在使用此代码:

ExcelPackage pck = new ExcelPackage(newFile);

var wk = pck.Workbook.Worksheets.SingleOrDefault(x => x.Name == "Content");

pck.Workbook.Worksheets.Delete(wk);

但在删除时它给了我“IndexOutOfRangeException”,但我试图从对象中删除,我试图按索引“1”删除,我只有两个工作表和相同的异常。文件和工作表不为空,但是当我无论如何执行删除时,我都会收到“IndexOutOfRangeException”。

发生了什么事?

注意:我也从 ExcelPackage 创建了这个工作表,现在我想删除它。

【问题讨论】:

  • 你确定 wk 不为空吗?
  • 我遇到了同样的例外情况:while (wb.Worksheets.Count > 0) wb.Worksheets.Delete(0);
  • 顺便说一句,将我的代码更改为while (wb.Worksheets.Count > 0) wb.Worksheets.Delete(1); 时,不会发生异常。似乎索引是从一开始的,而不是从零开始的。
  • 您还没有添加任何名为“内容”的工作表,为什么 wk 不能为空?

标签: c# excel epplus


【解决方案1】:

看起来您遇到了一些临时错误/问题,这已经修复。从 EpPlus 4.0.1.1 开始,以下代码可以正常工作:

var workbookFileInfo = new FileInfo(@"Workbook.xlsx");
using (var excelPackage = new ExcelPackage(workbookFileInfo))
{
    excelPackage.Workbook.Worksheets.Add("Worksheet1");
    excelPackage.Workbook.Worksheets.Add("Worksheet2");
    excelPackage.Save();
}
using (var excelPackage = new ExcelPackage(workbookFileInfo))
{
    var worksheet = excelPackage.Workbook.Worksheets.SingleOrDefault(x => x.Name == "Worksheet1");
    excelPackage.Workbook.Worksheets.Delete(worksheet);
    excelPackage.Save();
}

尝试更新到最新可用的 EpPlus 稳定版本,如果对您没有帮助,请发布适用于最新版本的其他详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多