標籤:code 小白 為我 建模 替換 back 簡曆 郵箱 doc
由於工作需求,需要把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下載-簡單粗暴方式