如何在不锁定的情况下打开Excel文件?

时间:2012-12-10 14:53:59

标签: c# excel interop

我有一个构建Excel报告的过程,然后为用户打开它。问题是如果有人将文件保持打开状态,它会保持锁定状态,并且在第一个人退出excel文件之前,没有其他人可以构建报告。

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

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

using Excel = Microsoft.Office.Interop.Excel;

...

xlsBook.SaveAs(newFileName, Excel.XlFileFormat.xlWorkbookNormal);

使用Process.Start

打开文件
Process.Start(newFileName);

2 个答案:

答案 0 :(得分:8)

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

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

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

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

答案 1 :(得分:3)

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

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