我之前已经问过类似的问题,但找不到我要找的确切答案。
我有一个Excel文件,我想用它来报告puropses并填充大量结果。因此,我计划将一个Excel模板文件作为资源,打开它然后填充它,但它将保留为未保存的" Book1"工作簿。我正在阅读的所有内容似乎都在谈论在物理磁盘上某处保存resorce文件的副本,但我并不是真的想要这样做,因为我想让用户决定在哪里保存它
有人可以帮帮我吗?
答案 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>")