ワークシートに大量のデータを挿入できません。エラーは「プログラムの実行を続行するにはメモリが不足しています」です。私はExcel2007を使用しています。私の配列には393210行と29列があります。まず、1つの操作(範囲=(オブジェクト)配列)を使用して挿入しようとしました。その後、配列をいくつかの部分に分割しました。私のコード:
// Fill content
const int row_limit = 283500;
int row_start = 0;
int row_end;
int number_of_iterations = (int)Math.Ceiling((double)dtable.Rows.Count / (double)row_limit);
for (int idx = 0; idx < number_of_iterations; idx++)
{
if (idx == number_of_iterations - 1)
row_end = dtable.Rows.Count - 1;
else
row_end = row_start + row_limit - 1;
object[,] arr = new object[row_end - row_start + 1, dtable.Columns.Count];
int arr_row = 0;
for (int r = row_start; r <= row_end; r++)
{
for (int c = 0; c < dtable.Columns.Count; c++)
{
arr[arr_row, c] = dtable.Rows[r][c];
}
arr_row++;
}
((Excel.Range)ex_sheet.get_Range((Excel.Range)ex_sheet.Cells[row_start + 2, 1], (Excel.Range)ex_sheet.Cells[row_end + 2, dtable.Columns.Count])).Value = arr;
row_start = row_end + 1;
}
定数row_limitは、1回の操作中に挿入される行の最大数を設定します。数が283000未満の場合は、すべて問題ありません。しかし、それが283500を超えると、エラーが発生します。
ここで見つけたように、 「ワークシートのサイズは1,048,576行×16,384列」です。このエラーの理由は何ですか?