Html標簽輸出到前台並導出到Excel


      本篇文章介紹一個簡單的從后台拼html標簽到前台顯示並能導出到Excel的例子。

例如,我們在后台拼接一個課程表,要輸出到前台,樣子如下:

image_thumb2

后台部分代碼:

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)) ? "&nbsp;" : 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)) ? "&nbsp;" : 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的樣子:

clip_image002_thumb2

下面是完整示例下載:

點我下載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM