关键词:富文本编辑器  生成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文本

最新文章

  1. 前端构建工具:gulp的配置与使用
  2. android 悬浮覆盖状态栏的相关建议
  3. 开始使用MarkDown写博客
  4. mvc razor中renderPartial,RenderAction,Partial,Action的使用选择
  5. 使用按钮控制HTML5背景音乐开关
  6. BZOJ4503: 两个串
  7. 《统计推断(Statistical Inference)》读书笔记——第5章 随机样本的性质
  8. Android 5中不同效果的Toast
  9. 将ntfs分区转换为ext4分区
  10. C#多态问题
  11. 第4章 yum在线安装
  12. hdu 5272 Dylans loves numbers
  13. 待验证的一些IOS问题
  14. POJ 1287 Networking (最小生成树)
  15. Understanding JTS--reference
  16. QT中QWidget、QDialog及QMainWindow的区别
  17. C# IEnumerable 和 IEnumerator接口浅析
  18. [LeetCode] Valid Palindrome II 验证回文字符串之二
  19. ionic2中使用datetime组件如何默认设置当前时间?
  20. 【C++】C++中的基本内置类型

热门文章

  1. 豆瓣api之OAuth认证
  2. Swift学习笔记(一)搭配环境以及代码运行成功
  3. 解析http302重定向url
  4. 深入struts2.0(五)--Dispatcher类
  5. 通讯录C++console application
  6. 转载+自练(莫喷)怎样在cocos2d 2.1.4里面使用动画和Texture Packer
  7. Oracle SQL in 超过1000 的解决方案
  8. WebService使用JSON格式传递笔记+JQuery测试
  9. 空连接ipc$入侵
  10. SQL点滴23—T-SQL中的除法