将Datatable数据转换为HTML方法 .

 在平时的开发中经常会将DataTable数据转化到页面显示、打印、导出等操作,下面共享一个将Datatable转化为HTML的方法

public static string GetHtmlString(string ExportFileName, bool isPrint,DataTable tbl)  

    {  

    StringBuilder sb = new StringBuilder();  

        sb.Append("<HTML><HEAD>");  

        sb.Append("<title>" + ExportFileName + "</title>");  

        sb.Append("<META HTTP-EQUIV='content-type' CONTENT='text/html; charset=GB2312'> ");  

        sb.Append("<script language=javascript>");  

        sb.Append("self.resizeBy(0,0);");  

        sb.Append("self.resizeTo(screen.availWidth,screen.availHeight);");  

        sb.Append("</script>");  

        sb.Append("<style type=text/css>");  

        sb.Append("td{font-size: 9pt;border:solid 1 #000000;}");  

        sb.Append("table{padding:3 0 3 0;border:solid 1 #000000;margin:0 0 0 0;BORDER-COLLAPSE: collapse;}");  

        sb.Append("</style>");  

        sb.Append("</HEAD>");  

        if (!isPrint)  

            sb.Append("<BODY  >");  

        else  

            sb.Append("<BODY   onload = 'window.print()'>");  

        sb.Append("<table cellSpacing='0' cellPadding='0' width ='100%' border='1'");  

        sb.Append(">");  

        sb.Append("<tr valign='middle'>");  

        sb.Append("<td><b>" + CommonUI.Translate("RowSequences") + "</b></td>");  

        foreach (DataColumn column in tbl.Columns)  

        {  

            sb.Append("<td><b><span>" + column.ColumnName + "</span></b></td>");  

       }  

        sb.Append("</tr>");  

        int iColsCount = tbl.Columns.Count;  

        int rowsCount = tbl.Rows.Count - 1;  

        for (int j = 0; j <= rowsCount; j++)  

        {  

            sb.Append("<tr>");  

            sb.Append("<td>" + ((int)(j + 1)).ToString() + "</td>");  

            for (int k = 0; k <= iColsCount - 1; k++)  

            {  

                sb.Append("<td");  

                sb.Append(">");  

                object obj = tbl.Rows[j][k];  

                if (obj == DBNull.Value)  

               {  

                    // 如果是NULL则在HTML里面使用一个空格替换之   

                    obj = "&nbsp;";  

                }  

                if (obj.ToString() == "")  

            {  

                    obj = "&nbsp;";  

                }  

                string strCellContent = obj.ToString().Trim();  

                sb.Append("<span>" + strCellContent + "</span>");  

                sb.Append("</td>");  

            }  

            sb.Append("</tr>");  

        }  

        sb.Append("</TABLE></BODY></HTML>");  

        return sb.ToString();  

    }  

    将指定Datatable导出为EXCEL方法:

public static void Export(System.Web.UI.Page page,DataTable tbl, string strFileName)  

  {  

    StringWriter sw = new StringWriter();  

      sw.Write(GetHtmlString("",false,tbl));  

     sw.Close();  

      page.Response.Clear();  

      page.Response.Buffer = false;  

     page.Response.AppendHeader("Content-Disposition""attachment; filename=/"" + strFileName +  

        System.DateTime.Now.Year.ToString() + "-" +  

          System.DateTime.Now.Month.ToString() + "-" +  

          System.DateTime.Now.Day.ToString() + " " +  

         System.DateTime.Now.Hour.ToString() + "-" +  

          System.DateTime.Now.Minute.ToString() + ".xls/"");  

      page.Response.ContentType = "application/ms-excel";  

   page.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");  

      page.Response.Write(sw);  

      page.Response.End();  

  }  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值