在平时的开发中经常会将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 = " "; } if (obj.ToString() == "") { obj = " "; } 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(); }