私の現在のプロジェクトの一部には、120,000 以上のレコードを含む大きな SQL テーブルから Excel ワークシートを作成することが含まれます。現在、SqlDataReader を while ループで使用して、新しい Excel シートに直接データを入力していますが、明らかに非現実的な時間がかかります。StringBuilder を使用してローカルの .CSV ファイルを作成し、それを Excel で開く方が高速なオプションのようです。1,000 行ごとにデータをファイルにダンプするか、一度にすべて書き込むことをお勧めしますか? または、私が考慮していないこのデータをインポートするより効率的な方法はありますか?
データセットはユーザー入力によって異なるため、既存のファイルに単純に追加することはできません。
現在のコード:
SqlConnection cnnct = new SqlConnection("Data Source=Source;Initial Catalog=Catalog;Integrated Security=True;");
cnnct.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = cnnct;
string cmdText = "SELECT * FROM TABLE";
cmd.CommandText = cmdText;
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
columnChar = 'A';
rowCount++;
cellName = columnChar.ToString() + rowCount.ToString();
ws.get_Range(cellName, cellName).Value2 = dr["EXAMPLE_FIELD"].ToString();
columnChar++;
//The above three lines are identical for each field (there are 26)
}