使用Excel文件作为导出模板的最简洁方法

时间:2015-11-25 09:26:13

标签: c# .net office-interop excel-interop temporary-files

我有一个(winforms)项目,允许用户导出到Excel电子表格。这个导出是通过互操作(Microsoft.Office.Interop.Excel)完成的,然后使用"模板"我创建的电子表格。导出期间模板应保持不变,因为代码以编程方式保存到不同的文件路径。我想知道最干净的方法是什么。

目前我已将模板电子表格作为文件添加到我的项目中。我的理解是,如果我将 Build Action 属性设置为Embedded Resource,我仍然需要至少将文件保存到用户的硬盘驱动器中至少暂时为了使互操作能够访问它。我的理解是interop自动化Excel进程来打开文件。因此,建议每次尝试导出并使用System.IO.Path.GetTempFileName()时,将我的模板从嵌入资源中复制到用户的临时文件夹中吗?如果是这样,那么我如何实际掌握嵌入式资源呢?我尝试在Properties.Resources中寻找它,但它不在那里。或者有更聪明的方法来解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

请查看以下链接,其中介绍了如何将嵌入式资源保存到文件:https://stackoverflow.com/a/864276/342594

作为旁注:我会将文件存储在用户文件夹中的某个位置(例如我的文档)。然后,您可以为用户提供更改模板的机会。然后,您可以先检查模板是否存在,如果不存在则创建模板。否则使用现有模板。如果用户破坏了模板,您的导出方法可能会注意到它,您可以让用户有机会恢复到原始模板。

答案 1 :(得分:0)

我建议使用OpenXML(或其高级包装器,如ClosedXML),而不是Microsoft.Office.Interop.Excel。 您可以将嵌入式资源读作字节数组(以某种方式像that) 并用它来提供SpreadsheetDocument.Open。​​

UIBarButtonItem

编辑电子表格文档后,您可以将其保存在任何位置。