Epplus Csharp | 如何操作已打开(使用中)的Excel文件.它仅在Excel文件关闭时有效.我可以在代码执行之前关闭并重新打开,但不要认为这是一种方式,因为我的文件包含超过50000行(文件大小很大).请指教,如何搞清楚.
提前致谢
小智 6
不使用 FileInfo 打开 ExcelPackage 工作簿,而是使用流:
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
ExcelPackage pkg = new ExcelPackage(fs);
Run Code Online (Sandbox Code Playgroud)
通过在 excel 中打开路径指定的工作簿,您将能够从文件中读取行,但如果您尝试调用ExcelPackage.Save().
仅当打开文件以供第三方读取而不能写入时才有可能。
如果第三方打开了该文件以进行写入,则即使试图读取也要打开同一文件,都将导致System.IO.IOException。实际上,这FileStream与EpPlus和ExcelPackage 有关,而不是特定的。关于.NET的示例:
var fileStream1 = new FileStream(@"File.ext", FileMode.Open, FileAccess.Read);
var fileStream2 = new FileStream(@"File.ext", FileMode.Open, FileAccess.Read);
Run Code Online (Sandbox Code Playgroud)
会很好。但是以下片段的第二行:
var fileStream1 = new FileStream(@"File.ext", FileMode.Open, FileAccess.Write);
var fileStream2 = new FileStream(@"File.ext", FileMode.Open, FileAccess.Read);
Run Code Online (Sandbox Code Playgroud)
将导致System.IO.IOException。