利用C#代码将html样式文件与Word文档互换的方法

一、C#代码将html样式文件转为Word文档

创新互联公司是一家专业提供隰县企业网站建设,专注与成都网站建设、网站建设、H5高端网站建设、小程序制作等业务。10年已为隰县众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。

首先有个这样的需求,将以下网页内容下载为Word文件。

html代码:

样式展示:

利用C#代码将html样式文件与Word文档互换的方法

第一步:封装一个方法

1:在控制器BiddingNoticeManageController创建一个DownBiddingNoticeModal方法。(采用的MVC模式)

2:根据id查询当前中标信息(EF)

3:建一个中标通知书的html模板页(数据字段自定义占位符)

3-1:注:html模板中不需要、、、<body>等标签。只是单纯的div布局标签</p><p>3-2:布局标签中的样式必须是内联,就是写在标签中,不能写在外部.css中。</p><p>4:通过Stream、StreamReader两个类来读取这个模板文件(返回的是html字符串)。</p><p>5:2中查询出数据(对应字段)替换4中返回的html字符串中的占位符。</p><p>6:关键代码</p><div><pre> StringBuilder sb = new StringBuilder(); sb.Append( "<html xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:w=\"urn:schemas-microsoft-com:office:word\" xmlns:m=\"http://schemas.microsoft.com/office/2004/12/omml\"xmlns = \"http://www.w3.org/TR/REC-html40\">"); sb.Append(html); sb.Append("</html>");</pre></div><p>7:用法:在页面前端写一个a标签指向这个方法即可下载为Word文件了。</p><p>HTML模板文件:</p><div><pre><div class="modal-body"> <div > <table > <tr> <td >中标通知书<hr /></td> </tr> <tr> <td >@BidderName</td> </tr> <tr> <td > “XXXX物资平台”@ResourceCode号标的开标结果为贵方中标,现通知如下:</td> </tr> </table> <table border="1" cellspacing="0" cellpadding="10" > <tr > <th>品名</th> <th>资源编号</th> <th>数量(@Unit)</th> <th>中标价格(含税总金额:元)</th> <th>钢厂</th> <th>存放地(提货地)</th> </tr> <tr > <td>@ResourceName</td> <td>@ResourceCode</td> <td>@Count</td> <td>@TenderPrice</td> <td>@BrandName</td> <td>@InventoryPlace</td> </tr> <tr> <td colspan="6">备注:@Remarks</td> </tr> </table> <table > <tr> <td > 请贵方在收到通知书的5个工作日内交齐全额货款并签订合同。 </td> </tr> <tr> <td > 特此通知。 </td> </tr> <tr> <td > XXXX物资平台 </td> </tr> <tr> <td > @Year 年 @Moth 月 @Day 日 </td> </tr> </table> </div> </div></pre></div><div><pre> /// <summary> /// 下载中标通知书 /// 用法:前端一个a标签指向这个控制器的这个方法 /// </summary> /// <param name="id">中标通知书Id</param> [AbpMvcAuthorize(BiddingNoticeAppPermissions.BiddingNotice)] public ActionResult DownBiddingNoticeModal(long id) { #region 读取模板 var html = GetBidTempStrng(); #endregion #region 根据ID读取中标内容 替换数据 var model = _biddingNoticeRepository.FirstOrDefault(id); if (model != null) { html = html.Replace("@BrandName", model.BrandName).Replace("@ResourceCode", model.ResourceCode) .Replace("@ResourceName", model.ResourceName).Replace("@Count", model.Count.ToString()) .Replace("@TenderPrice", model.TenderPrice.ToString()).Replace("@BidderName", model.BidderName) .Replace("@InventoryPlace", model.InventoryPlace).Replace("@Remarks", model.Remarks) .Replace("@Year", model.CreationTime.Year.ToString()).Replace("@Moth", model.CreationTime.Month.ToString()) .Replace("@Day", model.CreationTime.Day.ToString()).Replace("@Unit", model.Unit); } else { html = html.Replace("@BrandName", "XXXXX").Replace("@ResourceCode", "ZYXXXXXXXX") .Replace("@ResourceName", "XXXXX").Replace("@Count", "0") .Replace("@TenderPrice", "0").Replace("@BidderName", "XXXXX") .Replace("@InventoryPlace", "XXXXX").Replace("@Remarks", "XXXXXXXX") .Replace("@Year", "XXXX").Replace("@Moth", "XX") .Replace("@Day", "XX").Replace("@Unit", "X"); } #endregion #region 转换为Word文档样式 StringBuilder sb = new StringBuilder(); sb.Append( "<html xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:w=\"urn:schemas-microsoft-com:office:word\" xmlns:m=\"http://schemas.microsoft.com/office/2004/12/omml\"xmlns = \"http://www.w3.org/TR/REC-html40\">"); sb.Append(html); sb.Append("</html>"); return File(Encoding.UTF8.GetBytes(sb.ToString()), "application/msword", $"中标通知书.doc"); #endregion } /// <summary> /// 读取中标通知书模板 /// </summary> /// <returns></returns> private string GetBidTempStrng() { StringBuilder sbHtml = new StringBuilder(); // 读取模板替换数据 var path = Server.MapPath("~/Common/BidTemplace/BidTemp.html"); using (Stream inStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read)) using (StreamReader outStream = new StreamReader(inStream, Encoding.Default)) { while (!outStream.EndOfStream) { sbHtml.Append(outStream.ReadLine()); } } var html = sbHtml.ToString(); return html; }</pre></div><p><strong>二、C# 将Word文档转换为HTML</strong></p><p>日常生活中,我们总是在Word中进行文字的编辑,它不仅能够保存Text文本,还可以保存文本的格式等等。那么如果我要将一Word文档上的内容展示在网页上,该怎么做呢?这里我提供了一个小工具,你可以将Word转换为Html,需要显示的话,可以直接访问该Html,废话不多说,下面看代码。</p><p>页面代码:</p><div><pre><span ><div> <input id="File1" type="file" runat="server"/> <asp:Button ID="btnConvert" runat="server" Text="转换" OnClick="btnConvert_Click" /> </div></span> </pre></div><p>C#代码:</p><div><pre><span deep="5">using System; using System.Data; using System.Configuration; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.IO; protected void Page_Load(object sender, EventArgs e) { } /// <summary> /// 将word转换为Html /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnConvert_Click(object sender, EventArgs e) { try { //上传 //uploadWord(File1); //转换 wordToHtml(File1); } catch (Exception ex) { throw ex; } finally { Response.Write("恭喜,转换成功!"); } } //上传文件并转换为html wordToHtml(wordFilePath) ///<summary> ///上传文件并转存为html ///</summary> ///<param name="wordFilePath">word文档在客户机的位置</param> ///<returns>上传的html文件的地址</returns> public string wordToHtml(System.Web.UI.HtmlControls.HtmlInputFile wordFilePath) { Microsoft.Office.Interop.Word.ApplicationClass word = new Microsoft.Office.Interop.Word.ApplicationClass(); Type wordType = word.GetType(); Microsoft.Office.Interop.Word.Documents docs = word.Documents; // 打开文件 Type docsType = docs.GetType(); //应当先把文件上传至<a title="服务器" target="_blank" href="http://www.cdfuwuqi.com/">服务器</a>然后再解析文件为html string filePath = uploadWord(wordFilePath); //判断是否上传文件成功 if (filePath == "0") return "0"; //判断是否为word文件 if (filePath == "1") return "1"; object fileName = filePath; Microsoft.Office.Interop.Word.Document doc = (Microsoft.Office.Interop.Word.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { fileName, true, true }); // 转换格式,另存为html Type docType = doc.GetType(); string filename = System.DateTime.Now.Year.ToString() + System.DateTime.Now.Month.ToString() + System.DateTime.Now.Day.ToString() + System.DateTime.Now.Hour.ToString() + System.DateTime.Now.Minute.ToString() + System.DateTime.Now.Second.ToString(); // 判断指定目录下是否存在文件夹,如果不存在,则创建 if (!Directory.Exists(Server.MapPath("~\\html"))) { // 创建up文件夹 Directory.CreateDirectory(Server.MapPath("~\\html")); } //被转换的html文档保存的位置 string ConfigPath = HttpContext.Current.Server.MapPath("html/" + filename + ".html"); object saveFileName = ConfigPath; /*下面是Microsoft Word 9 Object Library的写法,如果是10,可能写成: * docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, * null, doc, new object[]{saveFileName, Word.WdSaveFormat.wdFormatFilteredHTML}); * 其它格式: * wdFormatHTML * wdFormatDocument * wdFormatDOSText * wdFormatDOSTextLineBreaks * wdFormatEncodedText * wdFormatRTF * wdFormatTemplate * wdFormatText * wdFormatTextLineBreaks * wdFormatUnicodeText */ docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { saveFileName, Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatFilteredHTML }); //关闭文档 docType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { null, null, null }); // 退出 Word wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null); //转到新生成的页面 return ("/" + filename + ".html"); } public string uploadWord(System.Web.UI.HtmlControls.HtmlInputFile uploadFiles) { if (uploadFiles.PostedFile != null) { string fileName = uploadFiles.PostedFile.FileName; int extendNameIndex = fileName.LastIndexOf("."); string extendName = fileName.Substring(extendNameIndex); string newName = ""; try { //验证是否为word格式 if (extendName == ".doc" || extendName == ".docx") { DateTime now = DateTime.Now; newName = now.DayOfYear.ToString() + uploadFiles.PostedFile.ContentLength.ToString(); // 判断指定目录下是否存在文件夹,如果不存在,则创建 if (!Directory.Exists(Server.MapPath("~\\wordTmp"))) { // 创建up文件夹 Directory.CreateDirectory(Server.MapPath("~\\wordTmp")); } //上传路径 指当前上传页面的同一级的目录下面的wordTmp路径 uploadFiles.PostedFile.SaveAs(System.Web.HttpContext.Current.Server.MapPath("wordTmp/" + newName + extendName)); } else { return "1"; } } catch { return "0"; } //return "http://" + HttpContext.Current.Request.Url.Host + HttpContext.Current.Request.ApplicationPath + "/wordTmp/" + newName + extendName; return System.Web.HttpContext.Current.Server.MapPath("wordTmp/" + newName + extendName); } else { return "0"; } }</span> </pre></div><p>效果图:</p><p>转换后的Html文件</p><p><img src="/upload/otherpic57/98279.jpg" alt="利用C#代码将html样式文件与Word文档互换的方法"></p><p>这样就可以简单的在Html中展示word文档中的内容,而不需要在自己进行编辑了。当然,如果有需要的话,可以将转换的Html的路径存入数据库,根据不同的条件直接进行访问。</p><p><strong>总结</strong></p><p>以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对创新互联的支持。   </p> <br> 当前标题:利用C#代码将html样式文件与Word文档互换的方法 <br> 链接分享:<a href="http://csdahua.cn/article/joojgj.html">http://csdahua.cn/article/joojgj.html</a> </div> <div class="view-qrocde cl"> <div class="m z"><img src="/Public/Home/images/ew.jpg"/></div> <div class="text"> <h6>扫二维码与项目经理沟通</h6> <p>我们在微信上24小时期待你的声音</p> <p>解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流</p> </div> </div> <div class="othernews cl"> <h3>其他资讯</h3> <ul> <li><a href="/article/psshis.html">Linux基础命令rm的用法</a></li><li><a href="/article/psshjc.html">ReactNative时间转换格式工具类分享</a></li><li><a href="/article/psshee.html">怎么在Android中实现一个倒计时功能</a></li><li><a href="/article/psshig.html">70react_环境搭建_组件状态</a></li><li><a href="/article/psshsi.html">JavaNIO的详细介绍</a></li> </ul> </div> </div> </div> <div class="sidebar"> <div class="tuijian"> <a href="#"> <h2 class="cl"><span>行业动态</span></h2> <h3>企业网站建设的重要性!</h3> <p>现在虽然是移动互联网时代,但企业网站依然重要,包含PC站点,移动站。可以说企业网站关系企业的未来发展和前途,尤其对中小企业更是如此,一些中小企业老板,对自己的名片很在乎,因为这是个门面。...</p> </a> </div> <div class="ser sidesub"> <h2>服务项目</h2> <ul class="ebox"> <li class="sub sub-1"> <div> <h3>网站建设</h3> <p></p> <a class="btn" href="/serve/website/">查看详情</a> </div> </li> <li class="sub sub-1"> <div> <h3>移动端/APP</h3> <p></p> <a class="btn" href="/serve/moblie/">查看详情</a> </div> </li> <li class="sub sub-1"> <div> <h3>微信/小程序</h3> <p></p> <a class="btn" href="/serve/small/">查看详情</a> </div> </li> <li class="sub sub-1"> <div> <h3>技术支持</h3> <p></p> <a class="btn" href="/serve/tech/">查看详情</a> </div> </li> <li class="sub sub-1"> <div> <h3>其它服务</h3> <p></p> <a class="btn" href="/serve/othe/">查看详情</a> </div> </li> <li class="sub sub-5"> <div> <h3>更多服务项目</h3> <p> <a>用我们的专业和诚信赢得您的信赖,从PC到移动互联网均有您想要的服务!</a></p> <a class="btn" href="/serve/">获取更多</a> </div> </li> </ul> </div> <div class="contact" id="fix"> <h2 class="cl"> <span>联系吧</span> <a href="https://map.baidu.com/" class="ditu" rel="nofollow" target="_blank">在百度地图上找到我们</a> </h2> <h3>电话:13518219792</h3> <p>如遇占线或暂未接听请拨:136xxx98888</p> <div class="qq"> <a href="//wpa.qq.com/msgrd?v=3&uin=244261566&site=qq&menu=yes" rel="nofollow" target="_blank">业务咨询</a> <a href="//wpa.qq.com/msgrd?v=3&uin=244261566&site=qq&menu=yes" rel="nofollow" target="_blank">技术咨询</a> <a href="//wpa.qq.com/msgrd?v=3&uin=244261566&site=qq&menu=yes" rel="nofollow" target="_blank">售后服务</a> </div> </div> </div> <script> //固定滚动 (function () { var oDiv = document.getElementById("fix"); var H = 120, iE6; var Y = oDiv; while (Y) { H += Y.offsetTop; Y = Y.offsetParent }; iE6 = window.ActiveXObject && !window.XMLHttpRequest; if (!iE6) { window.onscroll = function () { var s = document.body.scrollTop || document.documentElement.scrollTop; if (s > H) { oDiv.className = "contact fixed"; if (iE6) { oDiv.style.top = (s - H) + "px"; } } else { oDiv.className = "contact "; } }; } })(); </script> </div> <div class="footer"> <div class="wp"> <div class="wpss cl"> <dl class="about"> <dt>网站制作</dt> <dd><a href="http://www.36103.cn/" target="_blank" title="成都网站制作">成都网站制作</a></dd><dd><a href="https://www.cdxwcx.com/" target="_blank" title="成都网站制作">成都网站制作</a></dd><dd><a href="http://www.cdxwcx.cn/bj/" target="_blank" title="网站制作价格">网站制作价格</a></dd><dd><a href="http://seo.cdkjz.cn/wangzhan/" target="_blank" title="网站制作公司">网站制作公司</a></dd> </dl> <dl class="about"> <dt>网站建设</dt> <dd><a href="https://www.cdcxhl.com/waimao.html" target="_blank" title="外贸网站建设">外贸网站建设</a></dd><dd><a href="http://www.cxhlcq.com/mobile/" target="_blank" title="重庆手机网站建设">重庆手机网站建设</a></dd><dd><a href="http://chengdu.xwcx.net/mobile/" target="_blank" title="手机网站建设套餐">手机网站建设套餐</a></dd><dd><a href="http://www.cxhljz.cn/" target="_blank" title="成都网站建设公司">成都网站建设公司</a></dd> </dl> <dl class="about"> <dt>网站设计</dt> <dd><a href="http://www.kswcd.cn/" target="_blank" title="专业网站设计">专业网站设计</a></dd><dd><a href="https://www.cdcxhl.com/xiangyingshi.html" target="_blank" title="响应式网站设计">响应式网站设计</a></dd><dd><a href="http://www.cxhljz.com/" target="_blank" title="网站设计制作">网站设计制作</a></dd><dd><a href="http://www.cqcxhl.com/" target="_blank" title="重庆网站设计">重庆网站设计</a></dd> </dl> <dl class="contact"> <dt>联系我们</dt> <dd>电话:13518219792</dd> <dd>邮箱:631063699@qq.com</dd> <dd>地址:成都青羊区锦天国际1002号</dd> <dd>网址:www.csdahua.cn</dd> </dl> <dl class="flow"> <dt></dt> <div class="ma cl"> <div class="m"> <img src="/Public/Home/images/ew.jpg" /> <p>微信二维码</p> </div> </div> </dl> </div> </div> <div class="footer-link wp"> <ul class="wpss cl"> <li class="fisrt">友情链接</li> <li><a href="https://www.xwcx.net/zuyong.html" title="成都服务器租用" target="_blank">成都服务器租用</a></li><li><a href="https://www.cdxwcx.com/" title="成都网站设计公司" target="_blank">成都网站设计公司</a></li><li><a href="http://www.gzxishu.com/" title="自动门" target="_blank">自动门</a></li><li><a href="https://www.cdcxhl.com/ruanwen/yingxiao" title="软文推广" target="_blank">软文推广</a></li><li><a href="https://www.cdcxhl.com/idc/cqlt.html" title="重庆联通机房托管" target="_blank">重庆联通机房托管</a></li><li><a href="http://www.scltwjx.com/ " title="护栏钻孔机" target="_blank">护栏钻孔机</a></li><li><a href="https://www.cdcxhl.com/idc/gylt.html" title="贵阳联通机房" target="_blank">贵阳联通机房</a></li><li><a href="http://chengdu.cdcxhl.com/weixin/" title="微信开发" target="_blank">微信开发</a></li><li><a href="http://www.4006tel.net/mobile/" title="成都app开发" target="_blank">成都app开发</a></li><li><a href="https://www.cdxwcx.com/tuiguang/zhenghe.html" title="全网营销" target="_blank">全网营销</a></li> </ul> </div> </div> <div class="bot-footer"> <div class="wp"> <p class="wpss"> <em>Copyright © 2002-2023 www.csdahua.cn 快上网建站品牌 QQ:244261566 版权所有</em> <em>备案号:<a href="http://beian.miit.gov.cn/" rel="external nofollow">蜀ICP备19037934号</a></em> </p> <p class="wpss" style="line-height:30px !important;"> </p> </div> </div> <div class="footer-kefu"> <ul> <li class="qq"><a href="https://wpa.qq.com/msgrd?v=3&uin=244261566&site=qq&menu=yes"><em></em>在线咨询</a> </li> <li class="tel"><a href="tel:13518219792" target="_blank"><em></em>13518219792</a></li> <li class="wx"> <em></em> <div class="code"> <img src="/Public/Home/images/ew.jpg" /> <p>微信二维码</p> </div> </li> <li class="m"> <em></em> <div class="code"> <img src="/Public/Home/images/ew.jpg" /> <p>移动版官网</p> </div> </li> <li class="top"><em></em></li> </ul> </div> <script src="/Public/Home/js/all.js"></script> </body> </html> <script> $(".cont img").each(function(){ var src = $(this).attr("src"); //获取图片地址 var str=new RegExp("http"); var result=str.test(src); if(result==false){ var url = "https://www.cdcxhl.com"+src; //绝对路径 $(this).attr("src",url); } }); window.onload=function(){ document.oncontextmenu=function(){ return false; } } </script>