2

ACE OLEDB ドライバーには、大きなファイルに関する既知の問題がありますか? 以下のコードを使用して、400Mb xls ファイルのワークシートを取得しています

public string[] GetWorkSheets()
{
    var connectionString  = "Provider=Microsoft.ACE.OleDb.12.0; data source=c:\filepath\filename.xls; Extended Properties=\"Excel 8.0;IMEX=1;HDR=YES;\"";
    DataTable dataTable;
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        connection.Open();//Exception thrown here for large files
        dataTable = connection.GetSchema("Tables");
    }

    int lenght = dataTable.Rows.Count;
    string[] worksheets = new string[lenght];
    for (int i = 0; i < lenght; i++)
    {
        worksheets[i] = dataTable.Rows[i]["TABLE_NAME"].ToString();
    }
    return worksheets;
}

OleDbException を受け取り、メッセージ システム リソースが超過しました。この関数をループで呼び出したり、ここに到達する前に他の接続を開いたりしていません。このコードは、小さなファイルに対して完全に機能します。

私のシステムには 4Gb の RAM があります。Windows 7 64Bit で動作します。Ace ドライバーも 64 ビットです。

この問題を修正するために何ができるか考えていますか?

4

2 に答える 2

0

ACE を使用しているため、32 ビットのプラットフォームであると想定しています。Win2k3?

boot.ini の /3GB スイッチで試しましたか?

Boot.ini ファイルで /3GB スイッチを使用しない限り、プロセスとアプリケーションの仮想アドレス空間は 2 GB に制限されます。 http://www.microsoft.com/whdc/system/platform/server/pae/paemem.mspx

/3GB を使用すると、1 GB 余分に取得できます。

于 2011-02-18T14:41:45.407 に答える
-1

この記事を読む

http://office.microsoft.com/en-us/excel-help/excel-specifications-and-limits-HP010073849.aspx

おそらくあなたのファイルは 1,048,576 行 x 16,384 列を超えていますか?

于 2011-02-14T15:59:39.940 に答える