在临时文件中打开 excel 个文件
Open excel file in a temporary file
我已经使用 excel interop 一段时间了,但出于某些原因决定开始使用 EPPLUS 库。
我喜欢它,但我想以与 Excel Interop 相同的方式打开 excel 文件:将文件作为临时文件打开,该文件实际上并不存在于任何地方。
到目前为止,EPPLUS 必须将文件保存在某个地方,以便我可以使用以下方式打开它:
System.Diagnostics.Process.Start()
目前我尝试过的是打开后删除文件:
excelPack.SaveAs(new FileInfo(name));
File.SetAttributes(name, FileAttributes.ReadOnly); //Force the user to save file As
System.Diagnostics.Process.Start(name);
File.Delete(name); //Crash here. File is in use
但是如您所见,由于文件已打开,它在最后一行崩溃了。
解决方法很简单。只需在删除文件之前将文件属性设置为正常即可。这将以某种方式告诉 windows 该文件不再使用:
excelPack.SaveAs(new FileInfo(name));
File.SetAttributes(name, FileAttributes.ReadOnly); //Force the user to save file As
System.Diagnostics.Process.Start(name);
File.SetAttributes(name, FileAttributes.Normal);
File.Delete(name);
文件将被删除,但它仍将在 Excel 中以只读方式打开。用户将能够保存它。
我已经使用 excel interop 一段时间了,但出于某些原因决定开始使用 EPPLUS 库。 我喜欢它,但我想以与 Excel Interop 相同的方式打开 excel 文件:将文件作为临时文件打开,该文件实际上并不存在于任何地方。 到目前为止,EPPLUS 必须将文件保存在某个地方,以便我可以使用以下方式打开它:
System.Diagnostics.Process.Start()
目前我尝试过的是打开后删除文件:
excelPack.SaveAs(new FileInfo(name));
File.SetAttributes(name, FileAttributes.ReadOnly); //Force the user to save file As
System.Diagnostics.Process.Start(name);
File.Delete(name); //Crash here. File is in use
但是如您所见,由于文件已打开,它在最后一行崩溃了。
解决方法很简单。只需在删除文件之前将文件属性设置为正常即可。这将以某种方式告诉 windows 该文件不再使用:
excelPack.SaveAs(new FileInfo(name));
File.SetAttributes(name, FileAttributes.ReadOnly); //Force the user to save file As
System.Diagnostics.Process.Start(name);
File.SetAttributes(name, FileAttributes.Normal);
File.Delete(name);
文件将被删除,但它仍将在 Excel 中以只读方式打开。用户将能够保存它。