本篇文章介紹一個簡單的從后台拼html標簽到前台顯示並能導出到Excel的例子。
例如,我們在后台拼接一個課程表,要輸出到前台,樣子如下:
后台部分代碼:
StringBuilder html = new StringBuilder();
html.Append("<table cellpadding=\"0\" cellspacing=\"0\" style=\"border:1px solid black;text-align:center;\" width=\"700\">\n");
html.Append("<tr>\n<td style=\"border-bottom: 1px solid black;text-align:center;\" colspan=\"6\">XXXX年XX月課程表</td>\n</tr>\n");
/*********************************************/
html.Append("<tr>\n");
for (int i = 0; i <= 5; i++)
{
if (i == 5)
{
html.Append("<td style=\"border-bottom: 1px solid black;text-align: center;\">" + (string.IsNullOrEmpty(toCNNum(i)) ? " " : toCNNum(i)) + "</td>\n");
}
else
{
html.Append("<td style=\"border-bottom: 1px solid black;text-align:center;border-right: 1px solid black;\">" + (string.IsNullOrEmpty(toCNNum(i)) ? " " : toCNNum(i)) + "</td>\n");
}
}
html.Append("</tr>\n");
/*********************************************/
html.Append("<tr>\n");
說白了就是在后台動態的拼接標簽,最后輸出到前台做顯示。
這里我們可以看到樣式固定的寫到標簽的內部了,這樣做最后其實只需要輸出table標簽就可以了,但是需要加樣式的地方就需要加在標簽內部。
當然我們可以把樣式寫成一個style提取出來,在標簽中加入class=”style”就行了,這樣做沒有問題,輸出到前台也可以正常顯示,但是在導出到excel時會遇到問題,導出的excel沒有樣式,因為我們在后台輸出時只是拼接了table標簽沒有把樣式帶上,樣式可以寫在前台的head標簽里,或者獨立到css文件中,但是在導出的excel中並不帶這些樣式。所以,在后台拼接標簽時,我們需要帶上完整的樣式增加一些必要的標簽,再導出到excel時就沒有問題了。
以上兩種方法可以根據實際應用來定。
下面我們看一下excel導出的關鍵代碼:
//輸出的應用類型
Response.ContentType = "application/vnd.ms-excel";
//設定編碼方式,若輸出的excel有亂碼,可優先從編碼方面解決
// Response.Charset = "gb2312";
Response.Charset = "utf-8";
Response.ContentEncoding = System.Text.Encoding.UTF8;
//關閉ViewState,此屬性在Page中
EnableViewState = false;
//filenames是自定義的文件名
Response.AppendHeader("Content-Disposition", "attachment;filename=data.xls");
//content是步驟1的html,注意是string類型
Response.Write(createTable());
Response.End();
注釋已經寫得很清晰了,導出到excel的樣子:
下面是完整示例下載:


