C#を使用してExcelワークシートに大きな2D配列を書きたいと思っています。配列が500x500の場合、これを作成するために使用するコードは次のとおりです。
var startCell = Worksheet.Cells[1, 1];
var endCell = Worksheet.Cells[500, 500];
var writeRange = (Excel.Range)Worksheet.Cells[startCell, endCell;
writeRange.Value = myArray;
この行で例外が発生します:
var endCell = Worksheet.Cells[500, 500];
COM経由でC#とExcelを使用したことがある人なら誰でも証言できるように、受け取ったエラーメッセージはほとんど役に立ちません。問題は、ワークシートに使用されている基になるデータ構造が、最初にシートを作成したときにセル500,500にインデックスを付けるのに十分なサイズではないことだと思います。
誰かが望ましい結果を達成する方法を知っていますか?範囲を作成する前に、基になるデータ構造のサイズを変更する簡単な方法があることを期待しています。
ありがとう。
編集:エラーメッセージは次のとおりです。
{"Exception from HRESULT: 0x800A03EC"}
-2146827284のエラーコードで優れています。
更新:以下のコメントで提供されているリンクは、互換モードでExcelシートを開く際の問題を示唆しています。これが問題のようです。コードを実行する前にドキュメントを.xlsxまたは.xlsm形式で保存すると、これは機能するようです。私の問題は、ユーザーが毎回これを行うことを期待できないことです。これを達成するためのプログラム的な方法はありますか?ファイルを開いて拡張子を確認し、必要に応じて新しい形式で保存するだけの場合でしょうか。