asp.net 导出Execl 解决中文名乱码

1.导出为cvs

首先要获取一连串的string类型的字符串,然后确定导出格式....

先获取表格的头,这个header不管你是固定还是动态,每个字段后面加一个",",用来表示一列;到最后换行时加Environment.NewLine;例如:

    ArrayList list = new ArrayList();
                        list.Add("xxx");
                        list.Add("xx");
                        list.Add("xx");
                        list.Add("xx");
                        list.Add("xxx");
                        list.Add("xx");
                        list.Add("xx");
                        list.Add("xx");
                        list.Add("xxxx");

string[] saleHeaders = (string[])list.ToArray(typeof(string));
                        temp = saleWriteOffHtmlStr(saleDt, saleHeaders);

  byte[] buffer = System.Text.Encoding.UTF8.GetBytes(temp.ToString());
                        byte[] outBuffer = new byte[buffer.Length + 3];
                        outBuffer[0] = (byte)0xEF;
                        outBuffer[1] = (byte)0xBB;
                        outBuffer[2] = (byte)0xBF;
                        Array.Copy(buffer, 0, outBuffer, 3, buffer.Length);
                        Response.Write(Encoding.UTF8.GetString(outBuffer));
  Response.Buffer = true;
            Response.AddHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode("销售数据") + ".csv;");
            Response.Charset = "utf-8";
            Response.ContentType = "text/csv";            

public string saleWriteOffHtmlStr(DataTable dt, string[] headers)

{
       string htmlstr = "";
    
foreach (string s in headers) { htmlstr += s.ToString().Replace(',', '') + ","; } htmlstr = htmlstr.Substring(0,htmlstr.Length-1) + Environment.NewLine;     foreach (DataRow dr in dt.Rows) { htmlstr += dr["Base_tabletNumber"].ToString().Replace(',', '') + ",";       .......       htmlstr += Environment.NewLine;     }     return htmlstr; }

2.导出为xls

HttpResponse resp;
                        resp = Page.Response;
                        resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
                        resp.AppendHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode("销售表", System.Text.Encoding.UTF8) + ".xls;");
                        resp.Write(temp);
                        temp = "";
                        resp.End();

public string saleWriteOffHtmlStr(DataTable dt, string[] headers)
        {

            string htmlstr = "";
            foreach (string s in headers)
            {
                htmlstr += s.ToString().Replace(',', '') + "\t";
            }
            htmlstr = htmlstr.Substring(0, htmlstr.Length - 1) + "\n";
            foreach (DataRow dr in dt.Rows)
            {
                htmlstr += dr["Base_tabletNumber"].ToString().Replace(',', '') + "\t";
.....................
.....................
 htmlstr += "\n";
            }
            return htmlstr;
        }

System.Web.HttpUtility.UrlEncode("销售表", System.Text.Encoding.UTF8)  处理文件名乱码问题

转载于:https://www.cnblogs.com/wuchao/archive/2013/01/22/2871074.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值