关键词:富文本编辑器  生成word  样式

为了解决标题中提出的问题,首选需要了解,在.net环境下读取数据库中的内容动态生成word至少有2种方式,【方式一】一种方式是在项目中添加引用,例如在“添加引用”对话框中的COM子tab中添加Microsoft Office 11.0 Object Library,然后再在代码中添加office相关的命名空间,使用word相关的对象读取模版文件并将文本写到模版提前设置好了标签的位置。这种方式是最初出现的方式,缺点在于:1.在服务器上需要按照office,否则在服务器环境想会因缺少库文件无法生成;2.需保持开发环境和服务器环境下office的版本一致,而服务器的环境相对稳定,软件更新频度不高,这一点对于那些喜欢追最新版本的开发者来说,可能会造成很多不必要的麻烦。【方式二】动态生成word文件的第二种方式是使用Open XML SDK,这种方法无需服务器安装office,是一种比较neat的方法,缺点是这种方式可能更适合新开发生成word的功能,对于方式一遗留代码的维护最好还是用方式一的方法。

用上面的方式将内容读入word和Excel等模版并不难。用富文本编辑器(最近比较fun KindEditor)进行文本编辑并控制样式,实际就是给文本加上html的标记,例如<strong></strong>等等,这时候将内容读入word并根据html tag的样式在word中显示同样的样式,需要一定技巧,弄不好容易直接显示html tag的文本。用方式二将富文本编辑器产生的内容生成到word中并显示对应的样式文章比较多,只要知道Open XML SDK这种开发方式就能搜到,因为操作的中间数据是统一的Office Open XML格式的,方式一的文章几乎没有,好不容易找到了一个英文的,思路也确实很简单,就是先把富文本编辑器产生的要读入word的文本保存到一个网页文件(.html文件中),然后在word中插入该文件,但给出的代码不太可用,仍然进行了一下午的摸索才得到行之有效的方式。下面是我的完整代码,每个参数都是设好的,可直接使用:

StreamWriter sw = new StreamWriter(System.Web.HttpContext.Current.Server.MapPath("~/temp.html"), false, Encoding.Default);
sw.Write("<html><head></head><body>");//temp.html中没有完整的html文件标记不行,没有的话会在word中显示html tag而不是样式,预先写入模版也行
sw.Write(dr["summary"].ToString());
sw.Write("</body></html>");
sw.Close(); object oFalse = false;
object oTrue = true;
object oMissing = System.Reflection.Missing.Value; doc.Bookmarks.get_Item(ref bm[202]).Range.InsertFile(System.Web.HttpContext.Current.Server.MapPath("~/temp.html"), ref oMissing, ref oFalse, ref oTrue, ref oFalse);

 下面是效果图:

(1)富文本编辑器中的文本

(2)生成的word文本

.net下将富文本编辑器文本原样读入word文档的更多相关文章

  1. C#(1)运用C#实现一键从Word文档转换TXT文本的功能

    有想直接从Word转TXT文本的可以看看,懒得复制粘贴的也可以使用下,方便而快捷!! 首先打开vs2012创建一个简单的form窗体: 里面主要的就是一个存放Word文档的button和一个执行的bu ...

  2. Java 在 Word 文档中使用新文本替换指定文本

    创作一份文案,经常会高频率地使用某些词汇,如地名.人名.人物职位等,若表述有误,就需要整体撤换.文本将介绍如何使用Spire.Doc for Java,在Java程序中对Word文档中的指定文本进行替 ...

  3. C#导出文本内容到word文档源码

    将做工程过程中较好的代码片段珍藏起来,下面的代码内容是关于C#导出文本内容到word文档的代码,希望能对小伙伴们也有好处.<%@ Page Language="C#" Aut ...

  4. 空间日志编辑器:word文档图文快速粘贴到web

    百度ueditor可以实现word文档图文快速粘贴到web 1.4.2之后官方并没有做功能的改动,1.4.2在word复制这块没有bug,其他版本会出现手动无法转存的情况 本文使用的后台是Java.前 ...

  5. C# 在word文档中复制表格并粘帖到下一页中

    C# 在word文档中复制表格并粘帖到下一页中 object oMissing = System.Reflection.Missing.Value;            Microsoft.Offi ...

  6. angularjs中展示富文本编辑器文本,向DOM中插入元素

    前几天在用textangular富文本编辑器插件时,将存储的文本及格式存储到数据库中,但是从后台接口中再向angular页面插入时却不能执行,即在Angular中操作DOM没有实现,后来查看了一下,操 ...

  7. 现在有没有一种富文本编辑器能够直接从 word 中复制粘贴公式的?

    tinymce是很优秀的一款富文本编辑器,可以去官网下载.https://www.tiny.cloud 这里分享的是它官网的一个收费插件powerpaste的旧版本源码,但也不影响功能使用. http ...

  8. 富文本编辑器tinymce支持从word复制粘贴保留格式和图片的插件wordpaster

    tinymce是很优秀的一款富文本编辑器,可以去官网下载.https://www.tiny.cloud 这里分享的是它官网的一个收费插件powerpaste的旧版本源码,但也不影响功能使用. http ...

  9. 如何从word文档复制内容到富文本编辑器

    在之前在工作中遇到在富文本编辑器中粘贴图片不能展示的问题,于是各种网上扒拉,终于找到解决方案,在这里感谢一下知乎中众大神以及TheViper. 通过知乎提供的思路找到粘贴的原理,通过TheViper找 ...

随机推荐

  1. Swift中文教程(一)--欢迎来到Swift的世界

    原文:Swift中文教程(一)--欢迎来到Swift的世界 Apple凌晨时在WWDC发布了Swift编程语言,语法简介我很喜欢,市面上没有完整的中文教程,我在ibooks里面下载了英文原版,现在开始 ...

  2. Bag标签之中的一个行代码实行中文分词实例1

    例1: 分词(返回以逗号隔开的词组,gap=",") <bagid=pPage act=2words name=words gap=",">我喜欢黄 ...

  3. java web.xml listener servlet 和filter加载顺序

    在该项目中总会遇到一些关于加载的优先问题.最近遇到了同样的类别似的,所以,如果你发现信息汇总下,以下是转载其他一些人,毕竟,人们写的不错.它不重复创建的轮.只是略作修改自己的观点. 首先能够肯定的是, ...

  4. ACM经典算法之字符串处理:字符串替换

    语法:replace(char str[],char key[],char swap[]); 參数: str[]:在此源字符串进行替换操作 key[]:被替换的字符串,不能为空串 swap[]:替换的 ...

  5. 饼干怪兽和APT攻击

    APT攻击就像一个孩子,你通过各种方式窃取他们的大脑要拿出饼干,为了防止恶意攻击,过失作为母亲未能发现和防止饼干盗窃贼如.于她仅仅监视厨房椅子.衣柜门或烤箱门的开启.建立起有效防御目标攻击与APT攻击 ...

  6. 使用C语言编写windows服务一般框架

    原文:使用C语言编写windows服务一般框架 编写windows服务和编写windows应用程序一样,有一些回调函数必须填写且向windows 服务管理器(service manager)进行注册, ...

  7. protobuf-net-data

    protobuf-net http://www.codeproject.com/Articles/642677/Protobuf-net-the-unofficial-manual https://g ...

  8. PHP通过OpenSSL生成证书、密钥并且加密解密数据,以及公钥,私钥和数字签名的理解

    一.公钥加密假设一下,我找了两个数字,一个是1,一个是2.我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥. 我有一个文件,不能让别人看,我就用1加密了.别人找到了这个文 ...

  9. hibernate实体类型映射文件

    1.通过写hibernate映射文件.实体类型转换为数据库中的表 据实体类型而写的. 实体类型User.java package cn.wwh.www.hibernate.dd.property; i ...

  10. Spring IOC 之Bean定义的继承

    一个Bean的定义可以包含大量的配置信息,包括构造器参数.属性值以及容器规范信息,比如初始化方法.静态工厂方法名字等等.一子bean的定义可以从父bean的定义中继承配置数据信息.子bean定义可以覆 ...