0

Excel ファイルを開いて内容を読み取るコードがあります。コードを初めて実行するたびに、プロンプトが表示されずに Excel ファイルが開きます。しかし、2回目からは常にこのメッセージが表示されます

TestFile.xlsx はユーザー 1 によって変更されています。読み取り専用として開きます

コードのこの部分で常にプロンプ​​トが表示されます。

Excel ._Workbook  xlsBook = xlsApp .Workbooks.Open (_fileName,0,false,5 ,"","",false ,Excel .XlPlatform .xlWindows ,"",true ,false ,0,true ,false ,false );

注意:操作が完了した後、VS 2012も使用してファイルを閉じます

では、このプロンプトの問題は何でしょうか??

4

2 に答える 2

0

コードを実行して終了した後、タスク マネージャーを調べます。ほとんどの場合、EXCEL.EXE インスタンスがまだ実行されています。

次のようなすべての com オブジェクトを解放していない可能性があります。

            System.Runtime.InteropServices.Marshal.ReleaseComObject(_theWorkbook);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(_sheets);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(_workSheet);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(_range);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(_excelObj);
于 2012-11-26T09:12:37.753 に答える
0

ファイルがまだ開かれているリソースがないことを確認してください。リソースを閉じるために使用しているコードを投稿できますか? おそらくそこにエラーがあります。

最後に、見苦しいですが、テスト目的には有効です。ファイルを閉じた後、ガベージ コレクターを手動で呼び出してみてください。

最後に、Interop DLL ではなく、OpenXml API を使用して Excel/Word ファイルを操作することを検討してください (これらは、アプリケーションで展開できる OpenXml ライブラリとは対照的に、クライアントに Excel をインストールする必要があることに注意してください)。

于 2012-11-26T09:12:54.610 に答える