【发布时间】:2012-11-27 15:06:12
【问题描述】:
我当前项目的一部分涉及从包含 120,000 多条记录的大型 SQL 表填充 Excel 工作表。我目前正在使用带有 while 循环的 SqlDataReader 来直接填充新的 Excel 工作表,但显然这需要不切实际的时间。使用 StringBuilder 构建本地 .CSV 文件 then 在 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)
}
【问题讨论】:
-
你试过什么?您是否有性能测试来尝试各种选项?您显示的代码与编写 CSV 文件无关。
-
正如我在最初的帖子中所说,我目前正在使用带有 while 循环的 SqlDataReader 来直接填充新的 Excel 工作表。我一直在探索不同的选择,但在我开始构建 CSV 之前,我正在寻找外部意见。我不是在寻找代码示例,我只是好奇是否有更有效的替代方案。
标签: c# sql-server excel