在嵌入式资源中找不到Excel文件

时间:2016-11-21 08:24:35

标签: c# resources manifest .net-assembly

我希望我的winforms用户下载一个他们应该填写的Excel模板。 我已经将Excel文件添加为项目资源的资源,但我似乎无法读取该文件以便能够再次保存它。

 var test = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceNames();
//One of the entries in test = MyProject.Properties.Resources.resources

 Assembly assembly = Assembly.GetExecutingAssembly();
 Assembly asm = Assembly.GetExecutingAssembly();
 Stream fileStream1 = asm.GetManifestResourceStream("MyProject.Properties.Resources.resources.ExcelTemplate.xlsx");

int len = fileStream1.Length; //Give error: Object reference not set to an instance of an object.

enter image description here

(该文件不必在Resouces中,它也可以是普通文件,但我也无法正常工作)

1 个答案:

答案 0 :(得分:0)

如果您需要执行除复制文件以外的操作。我猜你可能不得不使用Microsoft互操作或其他一些库。下面简单地将文件复制到目的地。

下面你的行 您说excel文件是模板,excel模板扩展名为xltx而不是xlsx

Stream fileStream1 = asm.GetManifestResourceStream("MyProject.Properties.Resources.resources.ExcelTemplate.xlsx");

我不确定你是否必须这样引用它。但要确保你收到文件,我猜你不是错误。看看我的线条是如何构造的。 ExcelAsResource是项目名称。

希望这有帮助。

Assembly asm = Assembly.GetExecutingAssembly();
Stream s = asm.GetManifestResourceStream("ExcelAsResource.Resources.TestEmbeddedExcel.xlsx");
FileStream fs = new FileStream(@"C:\Users\John\Desktop\cs\TestCopy.xlsx", FileMode.OpenOrCreate);
s.CopyTo(fs);
fs.Close();
s.Close();
相关问题