如何打开Excel文件而不locking它?

我有一个构buildExcel报表的stream程,然后为用户打开。 问题是,如果有人将文件打开,它将保持locking状态,并且只有第一个人退出Excel文件时,其他人才能构build报表。

有没有办法打开一个Excel文件而不locking它,使用Process.Start或Microsoft的Interop.Excel库?

每次运行报表时,我都使用Interop库来构build文件,并将其作为静态文件名保存在运行此应用程序的共享networking文件夹中

 using Excel = Microsoft.Office.Interop.Excel; ... xlsBook.SaveAs(newFileName, Excel.XlFileFormat.xlWorkbookNormal); 

然后使用Process.Start打开文件

 Process.Start(newFileName); 

您可以尝试以只读模式打开文件:

 var app = new Microsoft.Office.Interop.Excel.Application(); var workbook = app.Workbooks.Open(filename, ReadOnly: true); 

或者您可以尝试将其保存为共享模式:

 workbook.SaveAs(filename, AccessMode: XlSaveAsAccessMode.xlShared); 

如果最终用户只需要读取文件而不是修改文件,则可以创build卷影副本,然后打开该副本。

只需将原始文件复制到临时位置,然后从那里打开。 原始文件保持不变,因此可以被其他人打开。