Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 398|回复: 0

[原创]java读写word文档,完美解决方案

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-6-4 00:32:53 | 显示全部楼层 |阅读模式

      做项目的过程中,经常需要把数据里里的数据读出来,经过加工,以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...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-2 14:56 , Processed in 0.067603 second(s), 30 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表