如何阅读在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)) { }
要同时打开多个文件,需要以共享模式打开。
希望这可以帮助别人。