我已经使用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
但是您可以看到,由于文件已打开,它在最后一行崩溃了。
答案 0 :(得分:1)
解决方案非常简单。只需在删除文件之前将文件属性设置为正常即可。这将以某种方式告诉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中以只读方式打开。用户将可以保存它。