本篇文章介紹一個簡單的從后台拼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的樣子:
下面是完整示例下載: