繁体   English   中英

如何在C#中读取打开的Excel文件

[英]How to read open excel file at C#

我想用C#阅读已经打开的Excel文件。 我正在使用此方法,但是在Microsoft excel中打开文件时无法读取excel文件。

FileStream stream = File.Open("myfile.xlsx", FileMode.Open, FileAccess.Read);

它给出IOException: The process cannot access the file 'myfile.xlsx' because it is being used by another process.

我希望你明白我的意思。 我想保持excel文件打开,而在Microsoft excel中打开文件时,我想从C#中读取它。 我正在使用C#Net Framework 4.0

您需要使用FileShare.ReadWrite打开它:

FileStream stream = File.Open("myfile.xlsx", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

看到这个答案

我认为您可以在excel打开文件的同时复制该文件,因此您可以复制该文件,然后将其打开。 完成复制后,只需确保自己进行清理即可。

您可以使用Interop库来使用已经打开的Excel实例。

oExcel == (Excel.Application) System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application")

您可以尝试使用第四个参数FileShare打开File.Open。

FileStream stream = File.Open("myfile.xlsx", FileMode.Open, FileAccess.Read, FileShare.Read);

您可能还需要指定写访问权限。

要同时多次打开同一个文件,需要以共享模式打开它。

希望这可以帮助其他人。

为了确保正确打开和关闭文件,请查看使用c#using语句

using (FileStream stream = File.Open("myfile.xlsx", FileMode.Open, FileAccess.Read)) 
{

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM