我当前项目的一部分涉及从包含 120,000 多条记录的大型 SQL 表中填充 Excel 工作表。我目前正在使用带有 while 循环的 SqlDataReader 来直接填充新的 Excel 工作表,但显然这需要不切实际的时间。使用 StringBuilder 构建本地 .CSV 文件,然后在 Excel 中打开它似乎是一个更快的选择。是每千行左右将数据转储到文件中,还是一次全部写入?或者有没有更有效的方法来导入我没有考虑的这些数据?
数据集因用户输入而异,因此我不能简单地附加到现有文件。
当前代码:
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)
}