我遇到了將數據集中的數據寫入Excel電子表格的超時問題。以下是我的連接字符串:使用數據適配器更新在.NET中使用ACE超時Excel
<add key="ExcelConnectionStringHeader" value="Provider=Microsoft.ACE.OLEDB.12.0;Connect Timeout=30;Extended Properties="Excel 12.0;HDR=YES";Data Source="/>
連接超時屬性似乎不被提供程序支持。 Connection Timeout,Timeout,ConnectionTimeout,ConnectTimeout等都沒有。我的代碼創建了一個Data Adapter和InsertCommand,並從數據集中進行更新。這很有效,除非Update命令本身超過15秒,這是默認的OleDb超時。這就是爲什麼我試圖在連接字符串中設置它。我已經將CommandTimeout從30的默認值增加了,但這是非常不相關的。以下是我的代碼:
OleDbDataAdapter da = new OleDbDataAdapter(szHeaderSelect, oCnn); // Ratings_Test -- Loan_Test$A1:F1]",
DataSet dsTest = new DataSet();
da.InsertCommand = new OleDbCommand(szNewSQL + "(" + szColumns + ") " + "VALUES (" + szParams + ")", oCnn);
da.InsertCommand.CommandTimeout = 300;
foreach (DataRow oDr in dtTable.Rows)
{
drNew = dsTest.Tables[0].NewRow();
dsTest.Tables[0].Rows.Add(drNew);
}
var timer = new System.Diagnostics.Stopwatch();
timer.Start();
var recs = da.Update(dsTest, szExcelTab); // Ratings_Test }
timer.Stop();
我省略了循環,並且實際上構建了insert命令的內容和參數。相信我,它一切正常。 2200+記錄工作正常。
這是我添加計時器後,我發現問題是超時。處理2221條記錄時,需要14.95秒,並且在電子表格中顯示得很好。處理2260條記錄時,需要15.21秒,沒有任何顯示。沒有任何錯誤。我已經檢查了所有行更新後的行狀態,它們都沒有顯示任何故障。
底線,因爲ConnectionTimeout屬性是隻讀的,而供應商似乎並不支持連接字符串,做什麼在超時....
感謝。
就像一個額外的事情,結帳openxml,它與Excel表格也非常漂亮,還有非常大的Excel表格 – kunjee