0

.NET 4.0 (C#) で Excel ファイルを開いています。相互運用の 12.0 バージョンを使用しています。Excelファイルはxls(旧)です。問題なく開くことができますが、workbook.close() によって COM Exception が発生し、実際の詳細はありません。

oExcel = new Application();
oExcel.Visible = true;
oExcel.DisplayAlerts = false;

oBooks = oExcel.Workbooks;
oBook = null;
oBook = oBooks.Open(finalFilename);

oBook.Close();   // this gives COM Exception

私が間違っていることはありますか?

これが興味深いことです。これを保存する必要はありません。必要な処理が完了したら、必要なデータを取り出して保存します。コピーを作成したばかりのワークブックはすぐに消えてしまいます。

4

3 に答える 3

1
        Excel.Application objExcel = new Excel.Application();
        Excel.Workbook objWorkbook = (Excel.Workbook)(objExcel.Workbooks._Open(@"D:\a.xls", true,
        false, Missing.Value, Missing.Value, Missing.Value,
        Missing.Value, Missing.Value, Missing.Value,
        Missing.Value, Missing.Value, Missing.Value,
        Missing.Value));

あなたのコード...

            objWorkbook.Save();         
            objWorkbook.Close(true, @"C:\Documents and Settings\Administrator\b.xls", true);
            objExcel.Quit();
于 2013-09-06T17:13:08.980 に答える
0

私の経験では、開いたり閉じたりするときのエラーは、ファイルに問題があることを示している可能性が最も高いです。Excelデスクトップは非常に寛容で、ファイルに関するあらゆる問題を適切に処理します。ファイルは、何か問題があることを示すことなく、Excel で正常に表示および動作する場合があります。

ファイルを Excel で再保存してみてください。それでもうまくいかない場合は、新しいスプレッドシートを作成し、古いファイルから内容をコピーしてみてください。

于 2013-09-06T17:05:38.860 に答える
0

Workbook.Close には、パラメーターのないメソッド Close が含まれていないようです。

http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.workbook.close.aspx

メソッドのシグネチャ: void Close( Object SaveChanges, Object Filename, Object RouteWorkbook )

        object missing = Type.Missing;
        object noSave = false;
        oBook.Close(noSave, missing, missing);
于 2013-09-06T17:07:53.337 に答える