1

C# アプリケーションで WorkBook を開こうとしています。Open メソッドを呼び出すとSystem__COMObject、Workbook ではなく が返されます。これが私のコードです:

  Microsoft.Office.Interop.Excel._Application excelApp = new Application();
  Microsoft.Office.Interop.Excel._Workbook wb = new WorkBook();      

  wb  = excelApp.Workbooks.Open(filepath, Type.Missing, Type.Missing, Type.Missing,
                        Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                        Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

エラーはSystem.InvalidCastException. 私が間違っていることはありますか?

編集: COM パッケージをインストールしたり、設定を調整したりしません。相互運用機能を使用するには、COM コンポーネントが必要ですか?

4

3 に答える 3

0

System.InvalidCastExceptionが発生している場所はわかりませんが、その方法でWorkbookインスタンスを作成できるとは思いません。単純化して...

Microsoft.Office.Interop.Excel._Workbook wb = excelApp.Workbooks.Open(...);
于 2012-09-27T02:39:16.023 に答える
0

わかりました。Excelの相互運用機能の「WorkBook」はインターフェイスであり、クラスではないため、何か奇妙なことが起こっています。"= new WorkBook()"は単に機能しないはずです。

var excelApp = new Application();
var wb = excelApp.Workbooks.Open( filepath, Type.Missing, Type.Missing, 
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing ) as Workbook;

あなたが求めているものをネットする必要があります。(_Applicationを使用した)宣言の型も少しsussに見えます。

この例では、ExcelのCOM参照を使用しています。また、参照プロパティで[埋め込み相互運用機能タイプ]のオプションが[True]に設定されていることを確認してください。

于 2012-09-27T02:46:57.677 に答える
0

私はこの問題について熱心に調査した後。Microsoft.Interop with Excel にはいくつかの既知の問題があることを発見しました。最終的に、別のソリューション Flexcel を使用することにしました。

于 2012-11-13T23:25:25.190 に答える