2011-02-14 87 views
2

ACE OLEDB驅動程序是否對大文件有任何已知問題? 我使用下面的代碼在一個400MB xls文件ACE oleDb驅動程序無法處理巨大的Excel文件

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

任何想法可以做些什麼來解決這個問題?

+0

奇怪 - 我創建了一個大的Excel文件,並關閉文件,我得到了上述錯誤,但打開文件時,代碼無誤地運行。我使用的計算機的內存非常少,並且打開文件時代碼運行得相當快。 – Fionnuala 2011-02-17 14:54:30

+0

@Remou:延遲加載/延遲沖洗的情況可能嗎? – Mulki 2011-02-17 15:40:01

+0

如果你正在嘗試複製..我知道你需要代碼的哪一部分... – Mulki 2011-02-17 15:42:04

回答

0

您正在使用ACE,因此我認爲它是一個32位的platflorm。 WIN2K3?

你用boot.ini中的/ 3GB開關試過了嗎?

進程和應用程序的虛擬地址空間仍然限制爲2 GB,除非在Boot.ini文件中使用/ 3GB開關。 http://www.microsoft.com/whdc/system/platform/server/pae/paemem.mspx

使用/ 3GB時,您會得到1 GB的額外值,這可能只是個訣竅嗎?

相關問題