如何阅读在C#打开excel文件

我想用C#读取已经打开的excel文件。 我正在使用这种方法,但它不能读取excel文件,而在Microsoft 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

我认为你仍然可以在excel打开的时候复制这个文件,这样你就可以复制这个文件然后打开它。 只要确保在完成副本后清理完毕。

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

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

看到这个答案 。

您可以使用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); 

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

为了确保文件的正确打开和closures,请使用c#using语句

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

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

希望这可以帮助别人。