DataTable 导出 excel , 可以自定义列名,没有繁琐的引用

/// <summary>
        /// 由DataTable导出Excel
       /// </summary>
       /// <param name="p"></param>
       /// <param name="dt"></param>
       /// <param name="fileName"></param>
        /// <param name="b"> true为datatable列名  false为自定义列名</param>
       /// <param name="colHeaders"> 自定义列名 已|分割</param>
        public static void DataTableToExcel(Page p, DataTable dt, string fileName,bool b, string colHeaders)
        {
            HttpResponse resp;
            resp = p.Response;
            resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            resp.AppendHeader("Content-Disposition", "attachment;filename=" +  HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
            string  ls_item = "";
            int cl = dt.Columns.Count;
            定义表对象与行对象,同时用DataSet对其值进行初始化
            //DataTable dt = ds.Tables[0];
            DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的
            int i = 0;
          
            //取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符

            //取datatable里的列名
            if (b)
            {
                for (i = 0; i < cl; i++)
                {
                    if (i == (cl - 1))//最后一列,加n
                    {
                        colHeaders += dt.Columns[i].Caption.ToString() + "\n";
                    }
                    else
                    {
                        colHeaders += dt.Columns[i].Caption.ToString() + "\t";
                    }
                }
            }
            else
            {
                string[] colHeaderList = colHeaders.Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
                colHeaders = "";
                //自定义列名
                for (i = 0; i < colHeaderList.Length; i++)
                {
                    if (i == (colHeaderList.Length - 1))
                    {
                        colHeaders += colHeaderList[i] + "\n";
                    }
                    else
                    {
                        colHeaders += colHeaderList[i] + "\t";
                    }

                }
            }
            resp.Write(colHeaders);

            //逐行处理数据 
            foreach (DataRow row in myRow)
            {
               
                for (i = 0; i < cl; i++)
                {
                    if (i == (cl - 1))
                    {
                        ls_item += row[i].ToString() + "\n";
                    }
                    else
                    {
                        ls_item += row[i].ToString() + "\t";
                    }

                }
                resp.Write(ls_item);
                ls_item = "";

            }
            resp.End();
        }

  

转载于:https://www.cnblogs.com/albertwmm/p/4009323.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值