从C#资源打开Excel模板

本文关键字:Excel 模板 资源 | 更新日期: 2023-09-27 18:27:29

我知道以前也有人问过类似的问题,但找不到我想要的确切答案。

我有一个Excel文件,我想用它来报告purops并填充大量结果。因此,我计划将Excel模板文件作为资源,打开它,然后填充它,但它保留为未保存的"Book1"工作簿。我读到的所有内容似乎都在谈论将资源文件的副本保存在物理磁盘上的某个位置,但我并不真的想这样做,因为我想让用户决定将其保存在哪里。

有人能帮帮我吗?

从C#资源打开Excel模板

这应该会对您有所帮助。(在.NET 4.5中测试).

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
}

我建议您将该文件的临时版本保存在用户AppData''Local''目录中。因为在此文件夹中,您始终具有读写访问权限。创建报告后,您可以显示一个保存对话框来决定将excel文件复制到何处。

为了确保使用正确的文件夹,请尝试使用以下内容:

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

资源是什么意思?是否要将报表存储在程序集中?

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

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