我有一个构建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);
答案 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)
如果最终用户只需要读取文件而不是修改它,您可以创建一个卷影副本,然后打开该副本。
只需将原始文件复制到临时位置并从那里打开即可。原始文件保持不变,因此可以由其他人打开。