将 excel 模板保存为资源 C# Visual Studio 的一部分

Saving an excel template as part of the resources C# Visual Studio

我正在开发我的第一个 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());

保存文件

我试过的

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

右键单击我的解决方案 > 添加.. > 现有项目> Select 项目

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

Screenshot of all the available File Properties

我也尝试过将它添加到项目中,它给了我 "Copy to output" 的选项,但我不知道这对我有什么帮助,也不知道它有什么作用。

我研究了什么

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

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

谢谢大家的帮助! 我以前曾尝试问过这个问题,但这是我在这个网站上的第一个问题,我想我只是没有很好地准确地提出我的问题。

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

我的回答

我真的让它工作了! 我会在这里回复,这样任何遇到类似问题的人都可以受益

我学会了如何将文件实现为嵌入式资源,方法如下:

右键单击您的项目 > 属性 > 资源

单击 "Add Resource" > "Add Existing File"

添加文件

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

打开文件的属性并select生成操作"Embedded Resource"

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

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");

这只是我目前针对这个问题的解决方案,我对编程还很陌生,所以请物有所值。

我希望我今天帮助了某人。