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 ビットです。
この問題を修正するために何ができるか考えていますか?