DataTable导出到Excel的解决方案(.csv)文件

目前开发的一个系统需要将数据从数据库导出到Excel.

之前一直在用

将GridView源代码输出的方式,但是今天发现这种方式输出的XLS文件,在用Excel打开的时候会有一个提示“您尝试打开的文件XXX的格式与文件指定扩展名不一致。。。。是否打开”。

 

于是决心换一种方式导出。

 在园子里看到一些人使用Microsoft.Office.Interop.Excel来完成的。但是实际试了一下,每分钟大概能导出7-800条。速度实在是受不了。

 

于是使用了拼接csv文件的方式,csv文件可以用Excel正常打开,没有任何影响,而且可以转存成xls格式。

 

另外,以下代码的","(逗号) 换成“\t”就是标准的xls文件格式。

 

public   void  SetExcelFromData(System.Data.DataTable dt,  string  FileName)
    {
        StringWriter sw 
=   new  StringWriter();
        StringBuilder sb 
=   new  StringBuilder();
        
for  ( int  i  =   0 ; i  <  dt.Columns.Count; i ++ )
        {
            sb.Append(dt.Columns[i].ColumnName);
            
if  (i  !=  dt.Columns.Count  -   1 )
            {
                sb.Append(
" , " );
            }
        }
        sw.WriteLine(sb.ToString());
        
foreach  (DataRow dr  in  dt.Rows)
        {
            
for  ( int  i  =   0 ; i  <  dt.Columns.Count;i ++  )
            {
                sw.Write(dr[i]);
                
if (i != dt.Columns.Count - 1 )
                {
                    sw.Write(
" , " );
                }
               
            }
            sw.WriteLine(
"" );
        }
        sw.Close();
        Response.Clear();
        Response.AddHeader(
" Content-Disposition " " attachment; filename= "   +  Context.Server.UrlEncode(FileName)  +   " .csv " );
        Response.ContentType 
=   " application/ms-excel " ;
        Response.ContentEncoding 
=  System.Text.Encoding.GetEncoding( " UTF-8 " );
        Response.Write(sw);
        Response.End();
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值