提示在使用EPPlus创建的文件上保存更改

时间:2015-09-24 21:21:47

标签: c# sas epplus

我正在使用EPPlus v3.1.3创建一系列Excel工作簿。当我打开新创建的文件时,如果我关闭它而不触及任何内容,它会询问我是否要保存更改。如果我说"是"我唯一注意到的变化就是变化。是app.xml文件略有改变 - 工作簿中没有明显的差异,其余的XML文件是相同的。我尝试过这两种方法:

ExcelPackage p = new ExcelPackage(new FileInfo(filename));
p.Save();

以及

ExcelPackage p = new ExcelPackage();
p.SaveAs(new FileInfo(filename));

两者都有同样的问题。有没有办法让app.xml文件以最终形式输出?

这是一个问题的原因是因为我们使用SAS程序进行QC,当SAS程序打开文件时,因为它们是直接从EPPlus程序输出的,所以它不会从单元格中获取值。有公式。如果它被打开并且"是"选择"你想保存更改",它工作正常。但是,由于我们创造了数百个,这是不切实际的。

另外,我正在使用模板。模板显示正常。

特别奇怪的是,我们已经使用这个系统超过一年了,这是我们第一次遇到这个问题。

这有什么办法吗?在C#还是SAS方面?

2 个答案:

答案 0 :(得分:2)

你所看到的实际上并不罕见。 Epplus实际上并不生成完整的XLSX文件 - 而是创建原始XML内容(所有Office 2007文档格式都是基于xml的)并将其放在重命名为XLSX的zip文件中。由于它还没有通过Excel引擎运行,因此它没有完全格式化以优于喜欢。

如果它是一个简单的数据表,那么Excel可能不需要做太多的计算 - 只需要基本的格式化。因此,在这种情况下,它不会提示您保存。但即便如此,如果你这样做,你会看到它稍微改变了XLSX文件。如果你真的想看看它在幕后做了什么,请将文件重命名为.zip并查看之前和之后的xml文件。

您遇到的问题是因为它不仅仅是一个简单的表导出Excel第一次打开时必须运行计算。这可能是很多东西 - 公式,自动过滤器,自动列/行高度调整,概述等。基本上,任何会使表单看起来有点不同的东西"在excel完成之后。

不幸的是,没有简单的解决方法。以某种方式通过excel的DOM运行它将是最简单的当然会破坏使用EPPlus的目的。你可以做的另一件事是看到xml文件之前和之后的区别(并且你必须要看一下那里有一堆)并且模仿excel会在"之后改变/添加" 34;手动编辑XML内容的文件版本。这不是一个非常漂亮的选项,具体取决于更改的范围。你可以在这里看到我在其他情况下的表现:

Create Pivot Table Filters With EPPLUS

Adding a specific autofilter on a column

Set Gridline Color Using EPPlus?

答案 1 :(得分:1)

我使用EPPlus(版本4.1.0,fyi)遇到了同样的问题,发现在关闭之前添加了以下代码修复了问题:

p.Workbook.Calculate();
p.Workbook.FullCalcOnLoad = false;