我有一个非常简单的c#app,它使用EPPlus 4.1.1修改一个简单的Excel电子表格文件:
FileInfo fileInfo = new FileInfo(@"D:\file.xlsx");
ExcelPackage package = new ExcelPackage(fileInfo);
ExcelWorksheet workSheet = package.Workbook.Worksheets["Sheet1"];
// mod logic
package.Save();
一切似乎都在游泳。一旦我的应用程序完成执行,我将通过Excel从文件浏览器打开修改后的电子表格文件,以确认修改是否正确执行。 问题是,一旦我尝试关闭Excel,它就会提示我保存。现在,无论是保存还是不保留,修改仍然存在。然而Excel继续提示保存,直到我选择保存。我认为也许在代码中有一两个缺失导致这一步。有任何想法吗?谢谢!
答案 0 :(得分:0)
由于EPPlus创建XML文件的方式,一些用户遇到此问题。据我了解,EPPlus创建的Excel文件在Excel眼中可能不完整,因此Excel" save"功能正试图填写"底层XML的缺失部分。
根据我自己的经验,我发现有时在保存文件之前添加重新计算会使事物处于足够稳定的状态,以至于Excel不会在简单的打开/查看/关闭循环时再次尝试保存。
我也经历过一些情况,我在EPPlus中的一些编辑创建了一个Excel必须修复的逻辑上不稳定的工作表;大部分时间这些都是我的逻辑错误,比如合并单元格然后分组或隐藏某些部分。修复我的逻辑解决了这些错误。
我发现来自this answer的Rÿck Nöthing遇到了类似的问题。我个人会删除" FullCalcOnLoad"声明,因为您的需求可能与他的不同,您可能需要在加载时完整重新计算电子表格。
我使用EPPlus(版本4.1.0,fyi)遇到了同样的问题并找到了 在关闭之前添加以下代码修复了问题:
p.Workbook.Calculate();
p.Workbook.FullCalcOnLoad = false;