1.直接将Html转成Word。MVC自带FileResult很好用。Html中我们也可以嵌入自己的样式。
html:
<div id="target"> <style> table{border-collapse: collapse;border: 1px solid black;} td{border: 1px royalblue solid} </style> <img src="../../Content/eman_sm.png" alt="" /> <table> <tr> <td>姓名</td> <td>成绩</td> </tr> <tr> <td>张山</td> <td>80分</td> </tr> <tr> <td>李四</td> <td>90分</td> </tr> </table> </div> <div style="color: red"></div> <a id="ea" href="#">导出word</a> <a href="@Url.Action("ExportWords")">ExportWords</a>
<script> $("#ea").click(function () { var html = $("#target").html(); window.open("/Home/ExportWord?html=" + html); }) </script>
get方法会受到url长度的影响,可以换成隐藏的form提交。
<form id="form1" action="/Home/ExportWord"> <input type="hidden" value="" name="html" id="cc" /> <input type="submit" id="st" /> </form> <div id="target"> <style> table{border-collapse: collapse;border: 1px solid black;} td{border: 1px royalblue solid} </style> <table> <tr> <td>姓名</td> <td>成绩</td> </tr> <tr> <td>张山</td> <td>80分</td> </tr> <tr> <td>李四</td> <td>90分</td> </tr> </table> </div> <div style="color: red"></div> <a id="ea" href="#">导出word</a> <a href="@Url.Action("ExportWords")">ExportWords</a> <script> $("#ea").click(function () { var html = $("#target").html(); $("#cc").val(html); $("#st").click(); }) </script>
action端
1 [ValidateInput(false)] 2 public FileResult ExportWord(string html) 3 { 4 StringBuilder sb = new StringBuilder(); 5 sb.Append("<!DOCTYPE html>"); 6 sb.Append("<body>"); 7 sb.Append(html); 8 sb.Append("</body>"); 9 var byteArray = System.Text.Encoding.Default.GetBytes(sb.ToString()); 10 Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); 11 return File(byteArray, "application/ms-word", "wordtest" + ".doc"); 12 }