大量のデータを格納する目的のC#アプリケーションがあります。私はこれを達成するためにMicrosoft.Office.Interop.Excel(Microsoft.Office.Interop.Excel.dllバージョン14.0.0.0)を使用しています。 Excel 2007がインストールされています。オブジェクトの大きなリストをその後、繰り返し処理をC#Excel Interop行の制限 - > HRESULT:0x800A03ECの例外がスローされました
excelApp = new Microsoft.Office.Interop.Excel.Application();
excelWorkBook = excelApp.Workbooks.Add(misValue);//*--------> LINE NOT WORKING */
excelWorksheetBeingWritten = (Excel.Worksheet)excelWorkBook.Worksheets.get_Item(1);
私のコード、および行を記述する必要がありますたびに、私は次のように実行します:
は、私は次の行を使用し
var startCell = excelWorksheetBeingWritten.Cells[excelLineCounter, 1];
var endCell = excelWorksheetBeingWritten.Cells[excelLineCounter, 2];
string[] tmpArray = new string[2] { stringVar1, stringVar2 };
tmpRange = excelWorksheetBeingWritten.Range[startCell, endCell];
tmpRange.Value = tmpArray;
excelLineCounter 65536を超えると、「HRESULT:0x800A03EC例外」がスローされます。 Excel2007以前の有名な行制限(正確には65536)を完全に認識しています。私が理解できないのは、Excel 2007(私のバージョン)が1.048.576行の文書化された制限を持っているときに、その制限がその制限を使用している理由です。
一方、私は次のことで、上記の「動作していないLINE」を交換する場合、Excel 2007の行の制限を使用しているようだ、と例外が消滅:
excelWorkBook = excelApp.Workbooks.Open(@"H:\Workbook1.xlsx");//*--------> LINE WORKING */
注: " Excel Workbook(* .xlsx)として保存されている空のワークブックです。
Excelを使用するようにExcel Interopオブジェクトを設定するには、どのような習慣が必要か教えてください。デフォルトでは、以前に保存された空の.xlsxファイルを置くことなく、2007年の制限を満たすことができます。
Excelファイルを生成する必要がありますか?処理がはるかに簡単な.csvファイルを生成できます。行の制限をExcelで回避することができます。 – user3501749
ファイル.xlsを使用していますか?もしそうなら、それはあなたの問題です。 –
Interop(具体的にはExcelアドインなど)を使用する特別な理由がなく、対話的にこれをやっている場合を除き、Excelファイルをこのように作成しないことを強くお勧めします。それは非常に遅く、[いくつかのシナリオではサポートされません](https://support.microsoft.com/en-gb/help/257757/considerations-for-server-side-automation-of-office)。 [ClosedXML](https://github.com/ClosedXML/ClosedXML)のような管理されたコードでは、より適切なものかもしれません。 –