最近在写从服务器download数据输出到本地存为 excel的程序,中心思想是先select 到dataset中,然后用stringbuilder从dataset中写出来excel。需求方面是表名未知,表格字段固定,一张表达到10万级数据量,所以选用stringbuilder这种方法,速度快,10万条30s左右。
public void WriteExcel(DataSet ds,string path)
{
try
{
StreamWriter sw = new StreamWriter(path, false, Encoding.GetEncoding("gb2312"));
StringBuilder sb = new StringBuilder();
for (int k = 0; k < ds.Tables[0].Columns.Count; k++)
{
sb.Append(ds.Tables[0].Columns[k].ColumnName.ToString().Trim() + "\t");
}
sb.Append(Environment.NewLine);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
{
sb.Append(ds.Tables[0].Rows[i][j].ToString().Trim() + "\t");
}
sb.Append(Environment.NewLine);
// sb.Append("\n");
}
sw.Write(sb.ToString());
sw.Flush();
sw.Close();
MessageBox.Show("已经生成指定的Excel文件!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
要注意的是原本STATE字段读出来之后自带一个换行符,这个时候要注意用Trim(),去掉字符串之外的东西,比如换行符"\n".^-^