从C#资源打开Excel模板

时间:2014-10-23 12:05:13

标签: c# excel

我之前已经问过类似的问题,但找不到我要找的确切答案。

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

有人可以帮帮我吗?

3 个答案:

答案 0 :(得分:1)

这应该会帮助你。 (在.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
}

答案 1 :(得分:0)

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

为确保使用正确的文件夹,请尝试使用:

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

你的意思是资源?是否要将报告存储在程序集中?

答案 2 :(得分:0)

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

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