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列?