做项目的过程中,经常需要把数据里里的数据读出来,经过加工,以word格式输出。 在网上找了很多解决方案都不太理想,偶尔发现了PageOffice,一个国产的Office插件,开发调用非常简单!比网上介绍的poi,jacob等解决方按容易上手多了!功能接口虽然没有poi,jacob那么多,但是满足了一般的需求的百分之八九十,而且不像poi那样还需要区分处理07格式和03格式那么麻烦。

下面是百度百科PageOffice的介绍:

  https://baike.baidu.com/item/PageOffice/2737741?fr=aladdin

PageOffice的基本功能包括:

  在web网页里打开、编辑、打印预览、打印Word、Excel、PowerPoint等Office文档。
  文档并发控制机制。
  提供Word修订痕迹、手写批注、圈阅划线、键盘批注、电子印章等OA公文模块的必备功能。
  根据数据库动态将数据,包括文本、图片、表格等填充、导出到Word、Excel模板中指定的位置处,并且可以动态指定内容的各种格式。
  提取Word、Excel文档中指定位置处的内容,包括文本、图片(Excel暂不支持)、表格等,保存到数据库。
  其他功能就不细说了......

更多的接口说明参考PageOffice官网API:http://www.zhuozhengsoft.com/help/java3/index.html

下载地址:http://www.zhuozhengsoft.com/dowm/

下载PageOffice开发包之后,拷贝 Samples4 文件夹到 Tomcat 的 Webapps 目录下,访问:http://localhost:8080/Samples4/index.html 就会看到所有官方示例效果的列表,重点参考以下几个示例:  

  一、11、给Word文档中的数据区域(DataRegion)赋值的简单示例
  一、17、给Word文档中Table赋值的简单示例
  一、18、使用数据标签(DataTag)给Word文件填充文本数据
  二、6、后台编程插入Word文件到数据区域
  二、7、后台编程插入图片到数据区域
  二、8、后台编程插入Excel文件到数据区域
  二、9、给Word文档添加水印
  二、10、使用数据标签(DataTag)给Word文件填充带格式的数据
  二、11、在Word中动态创建数据区域

我们可以写一个简单的程序测试一下效果:

    PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);
poCtrl1.setServerPage(request.getContextPath()+"/poserver.zz"); WordDocument worddoc = new WordDocument();
//先在要插入word文件的位置手动插入书签,书签必须以“PO_”为前缀
//给DataRegion赋值,值的形式为:"纯文本内容、[word]word文件路径[/word]、[image]图片路径[/image]"
DataRegion data1 = worddoc.openDataRegion("PO_p1");
data1.setValue("测试字符串");//纯文本内容
DataRegion data2 = worddoc.openDataRegion("PO_p2");
data2.setValue("[word]doc/2.doc[/word]");//插入word文件
DataRegion data3 = worddoc.openDataRegion("PO_p3");
data3.setValue("[image]doc/1.jpg[/image]");//插入图片 //打开文件、填充数据
poCtrl1.setWriter(worddoc);
poCtrl1.webOpen("doc/template.doc", OpenModeType.docNormalEdit, "用户名");

  代码很简单。短短几句就完成插入文字,图片,子Word文件的功能!不过做项目的话,可以先定义好一个word模板,这样有利于排版,减少编写代码的工作量,也可以调用PageOffice提供的接口控制模板中数据区域的样式,但是编码工作量就增加了。其功能还远不止这些,根据具体需求具体处理吧。

最新文章

  1. 1014: [JSOI2008]火星人prefix
  2. C#编程总结(五)多线程带给我们的一些思考
  3. 自动存储管理 ASM (转)
  4. 更新日志 - 关于 iOS9 设备的安装及其他优化
  5. C++11新特性:自动类型推断和类型获取
  6. JS 利用window.open实现post方式的参数传递
  7. AngularJs应用页面
  8. 学习笔记:javascript内置对象:字符串对象
  9. 【原创】大数据基础之ElasticSearch(1)简介、安装、使用
  10. 洛谷P3343 [ZJOI2015]地震后的幻想乡 [DP,概率期望]
  11. JSP页面、包含
  12. Ubuntu下的Selenium爬虫的配置
  13. SAS 操作数据集的观测
  14. how do I get the difference between two R named lists?
  15. 判断pc端或移动端并跳转
  16. ZH奶酪:【数据结构与算法】基础排序算法总结与Python实现
  17. SGU---101 无向图的欧拉回路
  18. IDEA创建Spring Boot的项目
  19. iOS 开发,混合使用 ARC 和非ARC
  20. 调试Python的方式

热门文章

  1. 修改impala表location
  2. iOS 载入图片选择imageNamed 方法还是 imageWithContentsOfFile?
  3. 003-搭建框架-实现IOC机制
  4. XSS - html过滤
  5. Andorid:日常学习笔记(3)——掌握日志工具的使用
  6. Swift 学习 用 swift 调用 oc
  7. Listening Carefully SP1403S
  8. indy10 UDP实例
  9. iOS应用适配IPV6
  10. springmvc-restful