表格用檔案流的方式輸出為excel。執行個體代碼如下:
Code
public static void DaochuTalbe(string TableInnerHtml, string filename)
{
StringWriter sw = new StringWriter();
sw.WriteLine(TableInnerHtml);
sw.Close();
System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + filename + ".xls");
System.Web.HttpContext.Current.Response.ContentType = "application/ms-excel";
System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF7;
System.Web.HttpContext.Current.Response.Write(sw);
System.Web.HttpContext.Current.Response.End();
}
這種方法的從本質上說並非標準的excel格式,不過把html格式的檔案另存新檔excel的格式,然後用excel開啟罷了。
開啟後會發現匯出的excel無表格線,白白的一片,太難看了。
通過分析excel的格式代碼,我嘗試在程式裡增加帶表格線的excel頭部代碼,結果順利匯出有表格線的excel.
增加的代碼如下:
Code
/// <summary>
/// Excel頭部
/// </summary>
/// <returns></returns>
public static string AddExcelHead()
{
StringBuilder sb = new StringBuilder();
sb.Append("<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">");
sb.Append(" <head>");
sb.Append(" <!--[if gte mso 9]><xml>");
sb.Append("<x:ExcelWorkbook>");
sb.Append("<x:ExcelWorksheets>");
sb.Append("<x:ExcelWorksheet>");
sb.Append("<x:Name></x:Name>");
sb.Append("<x:WorksheetOptions>");
sb.Append("<x:Print>");
sb.Append("<x:ValidPrinterInfo />");
sb.Append(" </x:Print>");
sb.Append("</x:WorksheetOptions>");
sb.Append("</x:ExcelWorksheet>");
sb.Append("</x:ExcelWorksheets>");
sb.Append("</x:ExcelWorkbook>");
sb.Append("</xml>");
sb.Append("<![endif]-->");
sb.Append(" </head>");
sb.Append("<body>");
return sb.ToString();
}
Code
/// <summary>
/// Excel尾部
/// </summary>
/// <returns></returns>
public static string AddExcelbottom()
{
StringBuilder sb = new StringBuilder();
sb.Append("</body>");
sb.Append("</html>");
return sb.ToString();
}