我无法将大量数据插入工作表。错误是“内存不足,无法继续执行程序”。我正在使用 Excel 2007。我的数组有 393210 行和 29 列。首先,我尝试使用一个操作(Range = (object) array)插入它。之后,我将数组分成几个部分。我的代码:
// 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 设置在一次操作期间插入的最大行数。如果数字小于 283000,则一切正常。但如果它超过 283500,我会收到错误消息。
正如我在这里发现的“工作表大小为 1,048,576 行 x 16,384 列”。这个错误的原因是什么?