使用EPPlus多次向同一Excel文件写入数据

4
我已经在CodePlex讨论版上发布了这个问题 (https://epplus.codeplex.com/discussions/468568)。
以下是我在那里的复制和粘贴:
我正在尝试使用它来读取/写入SSIS内的Excel文档。 64位模式下的SSIS不支持Excel连接。 发生的情况是在写入相同Excel文件的不同任务中,第二个Save()总是失败。 我也能够在.NET中重现这个问题。 以下内容模拟了我在SSIS中的场景。
RowIndex = 2;
using (var ep = new ExcelPackage(new FileInfo(filePath)))
{                
            for (var i= 1; i<= 10; i++)
            {
                var worksheet = ep.Workbook.Worksheets["Sheet1"];
                worksheet.Cells[RowIndex, 1].Value = i;
                RowIndex++;
            }
            ep.Save();
}

RowIndex = 2;
using (var ep = new ExcelPackage(new FileInfo(filePath)))
{                
            for (var ii= 1; ii<= 10; ii++)
            {
                var worksheet = ep.Workbook.Worksheets["Sheet2"];
                worksheet.Cells[RowIndex, 1].Value = ii;
                RowIndex++;
            }
            ep.Save();
}

第二次保存会返回以下错误:
{"Error saving file C:\\####.xlsm"}
Inner Exception: 
   {"Index was outside the bounds of the array."}
      at OfficeOpenXml.Utils.CompoundDocument.GetChunk(Byte[] compBuffer, Int32& pos)
   at OfficeOpenXml.Utils.CompoundDocument.DecompressPart(Byte[] part, Int32 startPos)
   at OfficeOpenXml.VBA.ExcelVbaProject.ReadModules()
   at OfficeOpenXml.VBA.ExcelVbaProject.GetProject()
   at OfficeOpenXml.VBA.ExcelVbaProject..ctor(ExcelWorkbook wb)
   at OfficeOpenXml.ExcelWorkbook.get_VbaProject()
   at OfficeOpenXml.ExcelWorkbook.Save()
   at OfficeOpenXml.ExcelPackage.Save()

我尝试加载源代码以进行调试,但是单元格集合不再存在。我不确定发生了什么。需要帮助,谢谢。


你是想要保存同一个文件两次还是两个不同的文件? - techvice
1个回答

0
您可以在两个保存中使用相同的using语句。您只需打开文件一次,然后获取 / 使用另一个工作表即可。这可能会修复您的错误并提高性能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接