1. 程式人生 > >mvc中html導出成word下載-簡單粗暴方式

mvc中html導出成word下載-簡單粗暴方式

固定 tostring def odi tex doctype 電話 指定 js代碼

由於工作需求,需要把html簡歷頁導出成word下載。網上搜索了很多解決方案,基本都是用一些插件,然後寫法也很麻煩,需要創建模板什麽的。

固定替換值 代碼一大堆。但是對於我的需求來說 並沒有什麽用,因為我這邊的數據不能固定。 所以只能另尋辦法,皇天不負有心人 找了一天

終於找到了
哈哈

mvc中的FlieResult 非常強大 可以直接傳入html 指定文件格式 直接返回Flie文件下載

不多說了 直接上代碼吧 非常之簡單粗暴

後臺代碼:

        [ValidateInput(false)]
        [HttpPost]
        
public FileResult ExportWord(string html) { StringBuilder sb = new StringBuilder(); sb.Append("<!DOCTYPE html>"); sb.Append("<body>"); sb.Append(html); sb.Append("</body>"); var byteArray = System.Text.Encoding.Default.GetBytes(sb.ToString()); Response.ContentEncoding
= System.Text.Encoding.GetEncoding("gb2312"); return File(byteArray, "application/ms-word", "wordtest" + ".doc"); }

前臺代碼:

<body>
    <form hidden id="form1" action="/Home/ExportWord" method="post">
        <input type="hidden" value="" name="html" id="cc" />
<input type="submit" id="st" /> </form> <div id="target"> <style> table { border: 0; width: 1000px; } .tr { background-color: #ccc; font-size: 16px; width: 500px; } .pl20 { padding-left: 20px; } .pt10 { padding-top: 10px; } </style> <table> <tr class="tr"> <td>個人信息</td> </tr> <tr> <td class="pl20 pt10">姓名:張三</td> </tr> <tr> <td class="pl20 pt10">聯系電話</td> </tr> <tr> <td class="pl20 pt10">郵箱:[email protected]</td> </tr> </table> </div> </body> <a id="ea" href="#">導出word</a>

js代碼:

<script>
    $("#ea").click(function () {
        var html = $("#target").html();
        $("#cc").val(html);
        $("#st").click();
    })
</script>

這裏lz用的post提交,因為get提交url有長度限制 大家應該都懂 這裏就不多說了

樣式必須寫內聯或者行內樣式 不然導出來的文件會沒有樣式 圖片必須用絕對路徑 不然不會顯示

lz在研究導出word的時候去逛了一下智聯和51job的導出word 智聯沒看出是用的什麽方法導出的 51job應該也是用的這種類似的方式 用PHP寫的 由於lz是個剛入行的小白

51具體用什麽方式導出的也不太清楚 只是一個猜測 看了下他們那個簡歷頁的html代碼 樣式也是寫的內聯 所以lz大膽猜測應該也是這種簡單粗暴法


以上觀點純屬個人觀點
大牛勿噴 小白一個

mvc中html導出成word下載-簡單粗暴方式