将excel模板保存为资源C#Visual Studio

时间:2018-04-19 06:58:50

标签: c# excel visual-studio office-interop

我正在开发我的第一个C#项目,其目标是读取配置文件,将读取的数据保存在现有的Excel模板中,然后将excel文件的副本保存在所需的位置。

解析部分已成功创建,我也知道如何使用实际的现有Excel模板执行此任务,只要我知道它的位置。但我正在努力克服必须将excel模板保留为目录的一部分的问题,我的目标是将excel文件作为我最终可执行文件的一部分。

我已经阅读了与我类似的其他问题,但我认为我没有足够的经验来理解我真正需要做的事情。

我有什么:

using Excel = Microsoft.Office.Interop.Excel;
using Microsoft.Office.Core;
Excel excel = new Excel(startupPath + @"\template_hm_mach10x.xlsx", 1);

这是我创建我将使用的excel实例的方法,它是我放在/ debug文件夹中的现有模板,所以我可以在我的原型中使用它。

然后我使用

更改模板
 ws = wb.Worksheets[d.Ws];
 wb.Worksheets[d.Ws].Select();
 ws.Cells[d.Row, d.Col].Value2 = d.Data;

然后使用excel.SaveAs(saveFileDialog.FileName.ToString());

保存文件

我尝试了什么

我已经尝试通过执行以下操作将模板添加到我的解决方案中:

右键点击我的解决方案>添加..>现有项目>选择项目

在那里我试图寻找文件的汇编选项,但我在属性中找不到它们:

Screenshot of all the available File Properties

我也尝试将它添加到项目中,它给了我“复制到输出”的选项,但我不知道这对我有什么帮助,或者它做了什么。

我研究的内容

我已经阅读过有关人们将模板保存为某种二进制字符串然后生成文件并将其保存在计算机上的内容,这对我来说是一个很好的解决方案,但从来没有使用过这个我只是不这样做知道应该如何实现。我认为这将是最好的解决方案,因为最终用户不再能够访问模板文件了,而且学习如何做到这一点对我来说非常有趣。

但如果这不能解决我的问题,那么我很乐意学习如何使模板文件成为Programm的一部分,并能够使用它的相对路径。

谢谢大家的帮助! 我之前试过问这个问题,但这是我在这个网站上的第一个问题,我认为我没有做好准确地问我的问题。

如果我的代码或IDE的任何部分需要更多信息,我很乐意编辑它。

1 个答案:

答案 0 :(得分:1)

我的回答

我实际上得到了它的工作! 我会在这里回复所以任何面临类似问题的人都可以受益

我学会了如何将File作为嵌入资源实现,具体如下:

右击您的progect>属性>资源

点击“添加资源”>添加文件“添加现有文件”

现在,文件将显示在“资源”下的“项目结构”中。

打开文件的属性,然后选择构建操作“嵌入式资源”

嵌入的文件将保存在临时文件中的临时文件中,并从那里打开以进行编辑和保存。通过将资源流转换为字节数组来填充临时文件,然后将其写入文件中。

string templatefile = System.IO.Path.GetTempFileName();
MemoryStream ms = new MemoryStream(); 
_assembly.GetManifestResourceStream("SwitchConfigReader.Resources.template_hm_mach10x.xlsx").CopyTo(ms);
Byte[] bArray = ms.ToArray();
System.IO.File.WriteAllBytes(templatefile, bArray);
Excel excel = new Excel(templatefile, 1);

然后可以编辑和保存文件

excel.SaveAs( “path_and_name_of_Excel_Doc.xlsx”);

这只是我现在解决这个问题的方法,我对编程很新,所以请把它当作它的价值。

我希望我今天能帮助别人。