C#开发中怎么提升excel导出速度

   在项目中往往遇见excel导出功能,主要是用来做报表和查看合计数据,每个sheet最多最多65535行数据,主要讲一讲C#excel导出功能。无论多少数据2秒可以搞定,并且不占用过多内存。
          1>创建Excel 使用的是StreamWriter sw = new StreamWriter(path, false,Encoding.GetEncoding("gb2312"));最终生成文件
           2>使用 StringBuilder sb = new StringBuilder();类把查询出来的数据组合为一句超长字符串一次性插入到excel中,
            sb.Append(ds.Tables[0].Columns[k].ColumnName.ToString() + "\t");
            注意,可不能漏了"\t" 这个是非常重要的! 因为c# "\t"就等于 键盘上的Tab [朋友们可以试试:
           3>打开新的txt然后输入1按Tab,输入2按Tab,输入3按Tab保存,然后打开excel文件
           4> 把刚刚保存的txt文件拉进去打开你就发现原来。这样写的话1 2 3 会分别在每个单元格上的了。
            所以上面才使用 "\t"连起来数据库出来的那堆数据,这样一次性导进去,他们就会按照每个单元格来填充!
           5>控制开头为0的要求不能去掉  方法是把导出的数据前面加上一个空格“ ”
代码: StreamWriter sw = new StreamWriter(path, false, Encoding.GetEncoding("gb2312"));
            StringBuilder sb = new StringBuilder();
            for (int k = 0; k < dt.Columns.Count; k++)
            {
                sb.Append(dt.Columns[k].ColumnName.ToString() + "\t");
            }
            sb.Append(Environment.NewLine);

            for (int i = 0; i < dt.Rows.Count; i++)
            {


                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    sb.Append(" "+dt.Rows[i][j].ToString() + "\t");//控制开头为0的要求不能去掉  方法是把导出的数据前面加上一个空格“ ”
                }
                sb.Append(Environment.NewLine);
            }
            sw.Write(sb.ToString());
            sw.Flush();
            sw.Close();
            MessageBox.Show("已经生成指定Excel文件!");  

你可能感兴趣的:(C#,Excel)