快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

利用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> URL网址:<a href="http://6mz.cn/article/joojgj.html">http://6mz.cn/article/joojgj.html</a> </div> </div> <div class="other"> <h3>其他资讯</h3> <ul> <li> <a href="/article/hoedgg.html">c语言中mmap函数,mmap命令</a> </li><li> <a href="/article/hoedss.html">go语言接口设计思路,go语言实现接口</a> </li><li> <a href="/article/hoeohp.html">c语言串处理函数,c语言字符串操作相关函数</a> </li><li> <a href="/article/hoedgp.html">中文开发鸿蒙系统,鸿蒙系统开发者版</a> </li><li> <a href="/article/hoedjc.html">jquery的事件对象,jquery事件对象求数组最大值</a> </li> </ul> </div> </div> <footer> <div class="message"> <div class="mess container"> <p>免费获取网站建设与品牌策划方案报价</p> <span>*主要业务范围包括:高端网站建设, 集团网站建设(网站建设网站制作)找网站建设公司就上快上网。</span> <form action=""> <input type="text" class="ipt1" placeholder="联系人"> <input type="text" class="ipt2" placeholder="联系电话"> <textarea name="" id="" placeholder="内容描述:描述您的需求,如网站、微信、电商、APP等。"></textarea> <a href="">提交需求</a> </form> </div> </div> <div class="footA"> <div class="footAs container"> <ul> <h3>联系我们</h3> <b>028-86922220</b> <li>手机:13518219792</li> <li>地址:成都市太升南路288号锦天国际A幢1002号</li> <li class="hr1"></li> <li>24小时服务热线:400-028-6601</li> </ul> <ul> <h3>网站建设服务</h3> <li>网页设计</li> <li>网站制作</li> <li>网站开发</li> </ul> <ul> <h3>网站推广服务</h3> <li>营销网站建设</li> <li>百度快速排名</li> <li>整站网站推广</li> </ul> <ul> <h3>网站运维服务</h3> <li>基础维护</li> <li>网站改版</li> <li>网站维护</li> </ul> <ul> <h3>FOLLOW US</h3> <li class="hr2"></li> <li> <dd class="fl"><img src="/Public/Home/img/ewm.png" alt=""><p>微信二维码</p></dd> <dd class="fr"><img src="/Public/Home/img/ewm.png" alt=""><p>微信二维码</p></dd> </li> </ul> </div> <div class="link container"> 友情链接: <a href="http://www.cqfuwuqi.cn/" title="重庆服务器托管" target="_blank">重庆服务器托管</a>   <a href="http://www.tjxishu.com/" title="成都柴油发电机租用" target="_blank">成都柴油发电机租用</a>   <a href="http://chengdu.cdcxhl.cn/" title="成都网站建设" target="_blank">成都网站建设</a>   <a href="http://www.cdhuace.com/fuwu.html" title="名片设计" target="_blank">名片设计</a>   <a href="https://www.cdxwcx.com/city/wenjiang/" title="温江做网站" target="_blank">温江做网站</a>   <a href="https://www.cdxwcx.com/wangzhan/h5.html" title="h5响应式网站" target="_blank">h5响应式网站</a>   <a href="http://www.hikvision-dg.com/" title="卡多尼人工智" target="_blank">卡多尼人工智</a>   <a href="https://www.cdcxhl.com/ssl/chengdu.html" title="SSL证书" target="_blank">SSL证书</a>   <a href="https://www.cdcxhl.com/shoulu/" title="网站快速收录" target="_blank">网站快速收录</a>   <a href="http://www.dmvi.cn/ser/baozhuang/" title="成都包装设计公司" target="_blank">成都包装设计公司</a>    </div> </div> <div class="footB"> <div class="container"> <div class="fl"> Copyright © 2022 成都快上网科技有限公司 成都网站建设公司-选网站建设公司快上网!国内专业的网站制作公司! </div> <div class="fr"> All Rights Reserved 版权所有 <a href="https://beian.miit.gov.cn/" target="_blank" rel="nofollow">蜀ICP备19037934号-11</a> </div> </div> </div> </footer> </body> </html> <script> $(".con 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>