我正在使用EPPlus v3.1.3创建一系列Excel工作簿.当我打开新创建的文件时,如果我关闭它而不触及任何内容,它会询问我是否要保存更改.我注意到的唯一变化是,如果我说"是",则app.xml文件稍有改动 - 工作簿中没有明显的差异,其余的XML文件是相同的.我尝试了这两种方法:
ExcelPackage p = new ExcelPackage(new FileInfo(filename));
p.Save();
Run Code Online (Sandbox Code Playgroud)
以及
ExcelPackage p = new ExcelPackage();
p.SaveAs(new FileInfo(filename));
Run Code Online (Sandbox Code Playgroud)
两者都有同样的问题.有没有办法让app.xml文件以最终形式输出?
这是一个问题的原因是因为我们使用SAS程序进行QC,并且当SAS程序打开文件时,因为它们是从EPPlus程序直接输出的,所以它不从具有公式的单元格中获取值.如果它被打开并且"是"您选择"是否要保存更改",则可以正常工作.但是,由于我们正在创造数百个,这是不切实际的.
另外,我正在使用模板.模板显示正常.
特别奇怪的是,我们已经使用这个系统超过一年了,这是我们第一次遇到这个问题.
有没有办法解决?在C#或SAS方面?
您所看到的实际上并不罕见。Epplus 实际上并不生成完整的 XLSX 文件 - 而是创建原始 XML 内容(所有 Office 2007 文档格式都是基于 xml 的)并将其放置在重命名为 XLSX 的 zip 文件中。由于它尚未通过 Excel 引擎运行,因此尚未完全格式化为 Excel 喜欢的格式。
如果它是一个简单的数据表,那么 Excel 很可能不需要进行太多计算 - 只需进行基本格式设置即可。所以在这种情况下它不会提示你保存。但即使如此,如果您这样做,您也会看到它对 XLSX 文件进行了一些更改。如果您确实想了解它在幕后做了什么,请将文件重命名为 .zip 并查看前后的 xml 文件。
您遇到的问题是因为它不仅仅是一个简单的表格导出,Excel 在第一次打开时必须运行计算。这可能是很多东西 - 公式、自动过滤器、自动列/行高度调整、大纲等。基本上,任何在 Excel 完成后使工作表看起来有点“不同”的东西。
不幸的是,这个问题没有简单的解决办法。通过 excel 的 DOM 运行它会以某种方式最简单,这当然违背了使用 EPPlus 的目的。您可以做的另一件事是查看 xml 文件之前和之后之间的差异(其中有很多您必须查看的内容),并模仿 excel 在“之后”文件版本中更改/添加的内容手动编辑 XML 内容。这不是一个非常好的选择,具体取决于更改的范围。你可以在这里看到我在其他情况下是如何做到的:
| 归档时间: |
|
| 查看次数: |
1342 次 |
| 最近记录: |