3

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);
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 に答える