目前开发的一个系统需要将数据从数据库导出到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();
    }

 

posted on 2011-08-09 17:12  kuibono  阅读(389)  评论(0编辑  收藏  举报

爱造人 | 快播影视