Giter VIP home page Giter VIP logo

export-word's Introduction

总结:

不与考虑的工具:Jacob、JSP、iText、java2Word、PageOffice、Spire.DOC、jasperreports;予以考虑的工具:Apache POI、FreeMarker

  • Jacob不考虑,因为其服务器只能是windows平台,不支持unix和linux,且服务器上必须安装微软Office。
  • iText只能生成rtf格式的文档,这个是致命的,对于客户体验来说,这个是不可接受的。
  • java2Word,需要windows支持,若是开源项目应该要通用,不因仅word导出就让项目应用环境受限。
  • PageOffice,不能在服务器端生成文件,若是开源项目应该要通用,不因仅word导出就让项目应用环境受限。
  • Spire.DOC:收费的。
  • jasperreports:在maven 仓库中 引用数过低【更实际的原因是我拉不下它的pom依赖。】,还有原因就是我看到它依赖的包有点多,让我觉得它有点重了,怕对项目造成不良影响。
  • Apache POI:较为原生,但也就相对轻量。在当前项目的demo中,POITL对其进行了封装,提供了简易使用的API。
  • Freemarker:采用Freemarker模板生成word是由XML+FreeMarker实现的。 XML文件定义模板,然后Freemarker解析模板输出到word。
  • docx4j:基于 JAXB 的 Java 库,用于生成 Word docx、Powerpoint pptx 和 Excel xlsx 文件,而如果项目仅是导出word文档,个人觉得太过冗余。

java导出word的若干方式及比较

https://www.cnblogs.com/ziwuxian/p/8985678.html https://www.cnblogs.com/yuluoxingkong/p/9298270.html

1:Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。通过Jacob实现了在Java平台上对微软Office的COM接口进行调用。

  • 优点:调用微软Office的COM接口,生成的word文件格式规范。

  • 缺点:服务器只能是windows平台,不支持unix和linux,且服务器上必须安装微软Office。

2:Apache POI包括一系列的API,它们可以操作基于MicroSoft OLE 2 Compound Document Format的各种格式文件,可以通过这些API在Java中读写Excel、Word等文件。

  • 优点:跨平台支持windows、unix和linux。
  • 缺点:相对与对word文件的处理来说,POI更适合excel处理,对于word实现一些简单文件的操作凑合,不能设置样式且生成的word文件格式不够规范。

3:Java2word是一个在java程序中调用 MS Office Word 文档的组件(类库)。该组件提供了一组简单的接口,以便java程序调用他的服务操作Word 文档。 这些服务包括: 打开文档、新建文档、查找文字、替换文字,插入文字、插入图片、插入表格,在书签处插入文字、插入图片、插入表格等。

  • 优点:足够简单,操作起来要比FreeMarker简单的多。
  • 缺点:没有FreeMarker强大,不能够根据模版生成Word文档,word的文档的样式等信息都不能够很好的操作。

4:FreeMarker生成word文档的功能是由XML+FreeMarker来实现的。先把word文件另存为xml,在xml文件中插入特殊的字符串占位符,将xml翻译为FreeMarker模板,最后用java来解析FreeMarker模板,编码调用FreeMarker实现文本替换并输出Doc。

  • 优点:比Java2word功能强大,也是纯Java编程。
  • 缺点:生成的文件本质上是xml,不是真正的word文件格式,有很多常用的word格式无法处理或表现怪异,比如:超链、换行、乱码、部分生成的文件打不开等。

5:PageOffice生成word文件。PageOffice封装了微软Office繁琐的vba接口,提供了简洁易用的Java编程对象,支持生成word文件,同时实现了在线编辑word文档和读取word文档内容。

  • 优点:跨平台支持windows、unix和linux,生成word文件格式标准,支持文本、图片、表格、字体、段落、颜色、超链、页眉等各种格式的操作,支持多word合并,无需处理并发,不耗费服务器资源,运行稳定。

  • 缺点:必须在客户端生成文件(可以不显示界面),不支持纯服务器端生成文件。

所用技术 优点 缺点
Jacob 功能强大 代码量大,设置样式繁琐;需要windows平台支持,无法跨平台
Apache POI 读写excel功能强大、操作简单 一般只用它读取word,能够创建简单的word,不能设置样式,功能太少
Java2word 功能强大,操作简单 能满足一般要求,不支持07格式,国人开发的,参考资料较多,需要windows平台支持
iText 功能全,能满足一般要求 不能直接生成或操作doc文档,只能生成rtf格式的文档,rtf也可以用word打开
JSP 操作简单,代码量少 能把当前页面导出简单的word,不能设置样式,美观性差,无法操作word
XML(最佳) 代码量少,样式、内容容易控制,打印不变形,完全符合office标准 需要提前设计好word模板,把需要替换的地方用特殊标记标出来
Spire.DOC 提供了很多Demo方便学习、兼容各word版本 非开源、收费

Word导出个人整理

当前项目中已有demo说明

ContentToWordController.class

依赖Apache POI,将获取到的String转为word存储,无样式,只是单纯的导出String为word存储, 若有需要应该可以添加插入图片。

TextAndPictureToWordDemo.class

Apache POI包括一系列的API,它们可以操作基于MicroSoft OLE 2 Compound Document Format的各种格式文件,可以通过这些API在Java中读写Excel、Word等文件。

  • 优点:跨平台支持windows、unix和linux。
  • 缺点:相对与对word文件的处理来说,POI更适合excel处理,对于word实现一些简单文件的操作凑合,不能设置样式且生成的word文件格式不够规范。

POITLController.class

对POI进行封装,提供非单易用的API,可以用其做简历。

衡量点:

  • 1、版本稳定性;
  • 2、对于仅需导出word,若无复杂样式需求,我觉得用该工具过重;
  • 3、与ruo-yi 是否兼容

freemarker.Demo.class

采用Freemarker模板生成word是由XML+FreeMarker实现的。 XML文件定义模板,然后Freemarker解析模板输出到word。

  • 优点:比Java2word功能强大,也是纯Java编程。
  • 缺点:生成的文件本质上是xml,不是真正的word文件格式,有很多常用的word格式无法处理或表现怪异,比如:超链、换行、乱码、部分生成的文件打不开等。

个人考量点:

  • XML模板文件的复杂度。对于我们当前不复杂的功能,我觉得可以使用freemarker导出word。

JavaToWordController.class

Java2word是一个在java程序中调用 MS Office Word 文档的组件(类库)。该组件提供了一组简单的接口,以便java程序调用他的服务操作Word 文档。 这些服务包括: 打开文档、新建文档、查找文字、替换文字,插入文字、插入图片、插入表格,在书签处插入文字、插入图片、插入表格等。

  • 优点:足够简单,操作起来要比FreeMarker简单的多。
  • 缺点:没有FreeMarker强大,不能够根据模版生成Word文档,word的文档的样式等信息都不能够很好的操作。 个人考量点: javaToWord只有jar包,没有pom依赖。当然其代码量相当少,可以直接引入做二次开发,但其需要windows平台支持。

export-word's People

Contributors

junode avatar

Stargazers

 avatar Wayne Ho avatar Aftery avatar

Watchers

 avatar

Forkers

xavierxue

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.