我希望我的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.
(该文件不必在Resouces中,它也可以是普通文件,但我也无法正常工作)
答案 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();