データセットから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="/>
[接続タイムアウト]プロパティはプロバイダによってサポートされていないようです。接続タイムアウト、タイムアウト、ConnectionTimeout、ConnectTimeoutなどもありません。私のコードはデータアダプタとInsertCommandを作成し、データセットから更新しました。これは、Updateコマンド自体がデフォルトのOleDbタイムアウトである15秒以上かかる場合を除き、うまく動作します。その理由は、私は接続文字列でそれを設定しようとしている。私は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();
実際には、挿入コマンドの内容とパラメータを作成するループは省略されています。私を信じて、それはすべて正常に動作します。 2200+のレコードは正常に動作します。
問題がタイムアウトしたことを発見したタイマーを追加した後です。 2221のレコードを処理すると、14.95秒かかり、スプレッドシートに正常に表示されます。 2260レコードを処理すると、15.21秒かかり、何も表示されません。どんな種類のエラーもありません。私はすべての行の更新後に行の状態をチェックしており、それらはすべて失敗を示さない。
ボトムライン、のConnectionTimeoutプロパティは読み取り専用で、プロバイダーが....
感謝をどうするか、接続文字列でタイムアウトをサポートしていないようだからです。
ちょうど余分なものとして、チェックアウトopenxml、それはExcelシートでも非常に素晴らしい仕事をしている非常に大きなExcelシート – kunjee