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 回答