3

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

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

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

using Excel = Microsoft.Office.Interop.Excel;

...

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

并使用打开文件Process.Start

Process.Start(newFileName);
4

2 回答 2

8

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

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

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

workbook.SaveAs(filename, AccessMode: XlSaveAsAccessMode.xlShared);
于 2012-12-10T15:22:52.350 回答
3

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

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

于 2012-12-10T14:56:26.147 回答