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

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位。

任何想法可以做什么解决这个问题?

你正在使用ACE,所以我认为它是一个32位平台。 WIN2K3?

你用boot.ini中的/ 3GB开关试过了吗?

进程和应用程序的虚拟地址空间仍然限制为2 GB,除非在Boot.ini文件中使用/ 3GB开关。 http://www.microsoft.com/whdc/system/platform/server/pae/paemem.mspx

有了/ 3GB,你可以得到一个GB的额外的可能只是伎俩?

阅读这篇文章

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

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