从C#资源打开Excel模板

我知道类似的问题之前已经问过,但找不到我正在寻找的确切答案。

我有一个Excel文件,我想用于报告puropses和填充大量的结果。 所以我打算把一个Excel模板文件作为一个资源,打开它然后填充它,但它作为一个未保存的“Book1”工作簿。 我正在阅读的所有内容似乎都是关于在物理磁盘上保存一份resorce文件的副本,但是我并不想这么做,因为我想让用户决定在哪里保存它。

有人可以帮帮我吗?

这应该帮助你。 (在.NET 4.5中testing)。

public void openExcelTemplateFromResources () { string tempPath = System.IO.Path.GetTempFileName(); System.IO.File.WriteAllBytes(tempPath, Properties.Resources.excelResource); Excel.Application excelApplication = new Excel.Application(); Excel._Workbook excelWorkbook; excelWorkbook = excelApplication.Workbooks.Open(tempPath) excelApplication.Visible = true; // at this point its up to the user to save the file } 

我build议您在用户的AppData \ Local \目录中保存一个临时版本的文件。 因为在这个文件夹中你总是读写访问。 在创build报告之后,您可以显示保存对话框来决定将excel文件复制到何处。

为了确保您使用正确的文件夹,请尝试使用以下命令:

 Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\YourFolder"; 

你的意思是资源 ? 你想把你的报告存储在程序集中吗?

您可以将其添加为资源,并使用以下示例将其提取到stream中。 <Namespace>是您的应用程序的命名空间,<FileName>是文件的实际名称。 这将允许您提示用户保存位置,然后将stream写入磁盘。

 Stream stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("<Namespace>.Resources.<FileName>")