将 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");
这只是我目前针对这个问题的解决方案,我对编程还很陌生,所以请物有所值。
我希望我今天帮助了某人。
我正在开发我的第一个 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");
这只是我目前针对这个问题的解决方案,我对编程还很陌生,所以请物有所值。
我希望我今天帮助了某人。