ACE oleDb驱动程序无法处理巨大的Excel文件

时间:2011-02-14 08:38:19

标签: c# excel oledbconnection ms-jet-ace oledbexception

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,并显示超出系统资源的消息。我没有在循环中调用此函数,或在我到达此处之前打开任何其他连接。此代码适用于较小的文件。

我的系统在Windows 7 64Bit上有4Gb RAM.Runs。 Ace驱动程序也是64位。

知道如何解决此问题?

2 个答案:

答案 0 :(得分: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的额外费用吗?

答案 1 :(得分:-1)

阅读这篇文章

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

也许你的文件有超过1,048,576行16,384列?