簡體   English   中英

無法在工作表中插入大量數據

[英]Can't insert big amount of data to worksheet

我無法在工作表中插入大量數據。 錯誤是“內存不足以繼續執行程序”。 我正在使用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行16,384列”。 這個錯誤的原因是什么?

Excel 2007僅限於大約2GB的內存(它是一個32位程序),但實際上由於內存碎片問題,它在達到該限制之前通常會耗盡內存。
內部Excel使用稀疏數組方案來跟蹤工作表中使用的單元格,因此盡管已發布的1,048,576行和16,384列的限制是正確的,但是不能在不超過2GB限制的情況下使用所有這些單元格(您需要超過1000個) GB)。
64位版本的Excel 2010和2013具有更大的內存限制。
有關Excel版本的內存限制的詳細信息,請參見http://www.decisionmodels.com/memlimitsc.htm

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM