`
dato0123
  • 浏览: 913493 次
文章分类
社区版块
存档分类
最新评论

完美解决方案:Java生成复杂Word文档

 
阅读更多

客户要求用程序生成标准的word文档,要能打印,而且不能变形,以前用过很多解决方案,都在客户严格要求下牺牲的无比惨烈。

  POI读word文档还行,写文档实在不敢恭维,复杂的样式很难控制不提,想象一下一个20多页,嵌套很多表格和图像的word文档靠POI来写代码输出,对程序员来说比去山西挖煤还惨,况且文档格式还经常变化。

  iText操作Excel还行。对于复杂的大量的word也是噩梦。

  直接通过JSP输出样式基本不达标,而且要打印出来就更是惨不忍睹。

  Word从2003开始支持XML格式,用XML还做就很简单了。

  大致的思路是先用office2003或者2007编辑好word的样式,然后另存为xml,将xml翻译为FreeMarker模板,最后用java 来解析FreeMarker模板并输出Doc。经测试这样方式生成的word文档完全符合office标准,样式、内容控制非常便利,打印也不会变形,生成的文档和office中编辑文档完全一样。

  看看实际效果

  首先用office【版本要2003以上,以下的不支持xml格式】编辑文档的样式,图中红线的部分就是我要输出的部分:

完美解决方案:Java生成复杂Word文档的

  将编辑好的文档另存为XML

完美解决方案:Java生成复杂Word文档的

  再用Firstobject free XML editor将xml中我们需要填数据的地方打上FreeMarker标记

完美解决方案:Java生成复杂Word文档的

  最后生成的文档样式

完美解决方案:Java生成复杂Word文档的

  主要程序代码:

分享到:
评论

相关推荐

    完美解决方案:Java生成复杂Word文档.doc

    完美解决方案:Java生成复杂Word文档

    java生成word文档完美解决方案.

    java生成word文档完美解决方案.

    word源码java-BuildWord:帮我整理word文档的工具

    目前来看,java导出word大致有6种解决方案: 1:Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。使用Jacob自带的DLL动态链接库,并通过JNI的方式实现了在Java平台上对COM程序的调用。DLL...

    Java使用iText生成word文件的解决方案

    NULL 博文链接:https://jianweicao.iteye.com/blog/1599994

    Java报表生成解决方案

    该代码提供了word、excel、pdf三种类型的文档生成方案,其中word文档使用“freemarker + xml + 模板”技术;excel使用“POI + 模板”技术;pdf使用“freemarker + itext + flying saucer”技术

    exportDoc:使用Itext API解决使用Java创建Word文档的问题

    exportDoc该demo是使用Itext实现Java生成word文档,当然,还有其他方式可以,例如:jacob,但是它局限于windows平台 往往许多JAVA程序运行于其他操作系统 在此不讨论该方案;另一种是pio但是它是excel处理程序 对于...

    word源码java-WordSolver:python处理word文档案例-列出修订点

    目前网上找到的解决方案有如下几种: 1.通过VB或者宏程序处理; 2.通过解析word的xml去处理。 第一种方式是最简单的,但是因为对这方面不太熟悉,而朋友又急着要,因此这个方案先抛弃了。 下面着重讲解通过解析word...

    JAVA上百实例源码以及开源项目

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    关于Java使用EasyExcel导出动态数据为Excel文件SpringBoot代码项目示例

    1、下载资源后请先看readme文档,README.md中有项目的介绍和具体的使用流程说明和易碰到的问题及解决方案。 2、若各位项目需求与本资源的样式相符度低,例如业务有渲染单元格颜色的,或者要求字体加粗,或者写入到多...

    JAVA上百实例源码以及开源项目源代码

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    Poi-tl v1.12.1-API文档(中文版).zip

    Poi-tl是一个基于Apache POI的开源Java模板引擎,用于生成Word、Excel等Office文档。该API文档详细介绍了Poi-tl v1.12.1的各个类、方法和用法,包括模板的创建、数据填充、样式设置、图表生成等功能。文档中还提供了...

    POI 中文学习文档(.doc)

    POI简介:在实际的开发中,表现层的解决方案多种多样,但是IE浏览器已成为最多人使用的浏览器,因为大家都用Windows。在企业办公系统中,常常有客户要求把他们的报表直接用Excel打开(电信系统、银行系统),或者是...

    基于Java的qq截图工具 设计软件源码+word毕业论文文档.zip

    基于Java的qq截图工具 设计软件源码+word毕业论文文档。基于java的QQ截屏工具的设计和实现能够实现对屏幕的随机截取,复制,保存以及添加文字等操作,便于用户对数据的处理。 该软件的功能: (1)随机获取屏幕...

    java开源包11

    JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一...

    java开源包6

    JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一...

    java开源包4

    JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一...

    java开源包9

    JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一...

    java开源包101

    JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一...

Global site tag (gtag.js) - Google Analytics