您现在的位置:首页 >> Asp.NET >> 内容

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

时间:2013-6-12 19:43:31 点击:

  核心提示:目前开发的一个系统需要将数据从数据库导出到Excel.之前一直在用将GridView源代码输出的方式,但是今天发现这种方式输出的XLS文件,在用Excel打开的时候会有一个提示“您尝试打开的文件XXX...

目前开发的一个系统需要将数据从数据库导出到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相关评论
发表我的评论
  • 大名:
  • 内容:
  • 青春网络编程技术(www.qcfupo.com) © 2020 版权所有 All Rights Reserved.
  • Powered by qcfupo! V3.0sp1
  • 百度友情链接: 百家乐[www.chinawestnews.net/aomenbaijiale/] 赌博网[www.chinawestnews.net/amdbwz/] 海立方[www.bjl.gov.cn/bjgylc/] 娱乐城[www.gtxrmzf.gov.cn/mapai/] 娱乐城[www.hfsf.gov.cn/yfgj/] 威尼斯人[www.hllinkou.gov.cn/baijile/] 澳门威尼斯[www.jjwgj.gov.cn/wnsr/] 888真人[www.lagm.gov.cn/888zhenren/] 百乐坊[www.laoling.gov.cn/blfylc/] 现金网[www.longyu.gov.cn/xjw/] 百家乐[www.chinawestnews.net/ambjl/] 新葡京娱乐场[www.sjzedu.gov.cn/jsylc/] 时时彩[www.snjw.gov.cn/ssc/] 赌博[www.chinawestnews.net/aomendubo/]