由于工作需求,需要把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大胆猜测应该也是这种简单粗暴法
以上观点纯属个人观点
大牛勿喷 小白一个
时间: 2024-11-03 21:08:39