Epplus Csharp |如何操作已打开(使用中)的Excel文件

时间:2013-11-14 06:08:55

标签: epplus

Epplus Csharp |如何操作已打开(使用中)的Excel文件。它仅在Excel文件关闭时有效。我可以在代码执行之前关闭并重新打开,但不要认为这是一种方式,因为我的文件包含超过50000行(文件大小很大)。请告知,如何弄清楚。

提前致谢

2 个答案:

答案 0 :(得分:4)

只有在文件被第三方阅读时才可以使用,但不能用于写作。

如果第三方打开了要写入的文件,您尝试打开同一个文件即使只是为了阅读也会导致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);

工作得很好。但是以下片段的第二行:

var fileStream1 = new FileStream(@"File.ext", FileMode.Open, FileAccess.Write);
var fileStream2 = new FileStream(@"File.ext", FileMode.Open, FileAccess.Read);

将产生System.IO.IOException

答案 1 :(得分:4)

不使用FileInfo打开ExcelPackage工作簿,而是使用流:

FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
ExcelPackage pkg = new ExcelPackage(fs);
  • path是文件的路径,否则您将用于FileInfo
  • FileMode说要打开它
  • FileAccess说你要阅读它
  • FileShare说其他程序可以读/写。

在excel中打开路径指定的工作簿,您将能够从文件中读取行,但如果您尝试调用ExcelPackage.Save(),则会出现异常。