目前来看,java导出word大致有6种解决方案:

1:Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。使用Jacob自带的DLL动态链接库,并通过JNI的方式实现了在Java平台上对COM程序的调用。DLL动态链接库的生成需要windows平台的支持。该方案只能在windows平台实现,是其局限性。

2:Apache POI包括一系列的API,它们可以操作基于MicroSoft OLE 2 Compound Document Format的各种格式文件,可以通过这些API在Java中读写Excel、Word等文件。他的excel处理很强大,对于word还局限于读取,目前只能实现一些简单文件的操作,不能设置样式。

3:Java2word是一个在java程序中调用 MS Office Word 文档的组件(类库)。该组件提供了一组简单的接口,以便java程序调用他的服务操作Word 文档。 这些服务包括: 打开文档、新建文档、查找文字、替换文字,插入文字、插入图片、插入表格,在书签处插入文字、插入图片、插入表格等。填充数据到表格中读取表格数据 ,1.1版增强的功能: 指定文本样式,指定表格样式。如此,则可动态排版word文档。是一种不错的解决方案。

4:iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。功能强大。

5:JSP输出样式,该方案实现简单,但是处理样式有点缺陷,简单的导出可以使用。

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

java导出word纸张方向_java导出word的几种方式相关推荐

  1. java时间戳是什么类型_java 获取时间戳的三种方式

    java 获取时间戳的三种方式 CreationTime--2018年7月13日16点29分 Author:Marydon 1.实现方式 方式一:推荐使用 System.currentTimeMill ...

  2. java创建线程并命名_Java创建线程的两种方式

    前言 多线程是我们开发过程中经常遇到的,也是必不可少需要掌握的.当我们知道需要进行多线程开发时首先需要知道的自然是如何实现多线程,也就是我们应该如何创建线程. 在Java中创建线程和创建普通的类的对象 ...

  3. java word 纸张大小_Java 设置Word页边距、页面大小、页面方向、页面边框

    本文将通过java示例介绍如何设置word页边距(包括上.下.左.右).页面大小(可设置letter/a3/a4/a5/a6/b4/b5/b6/envelop dl/half letter/lette ...

  4. java word 纸张大小_Java 设置 Word 页边距, 页面大小, 页面方向, 页面边框

    Java 设置 Word 页边距, 页面大小, 页面方向, 页面边框 本文将通过 Java 示例介绍如何设置 Word 页边距 (包括上, 下, 左, 右), 页面大小 (可设置 Letter/A3/ ...

  5. java字符串从后截取_java 字符串截取的几种方式(转)

    众所周知,java提供了很多字符串截取的方式.下面就来看看大致有几种. 1.split()+正则表达式来进行截取. 将正则传入split().返回的是一个字符串数组类型.不过通过这种方式截取会有很大的 ...

  6. java循环删除集合数据_java中循环的几种方式以及删除集合中的指定数据

    一.for //for循环中删除数据 -- 方法有漏洞 private static void deleteAtFor() { ArrayList array = new ArrayList<& ...

  7. java 创建5个线程_Java创建线程的三种方式

    1.继承Thread 类,创建线程类 ,调用start方法启动  (单一继承 ) public class Test1 extendsThread { @Overridepublic voidrun( ...

  8. java 创建线程的三种方法_java 创建线程的几种方式

    说道线程,肯定会想到使用 java.lang.Thread.java这个类 那么创建线程也主要有2种方式 第一种方式: public class MyThread extends Thread { p ...

  9. java解析遍历List集合(其实现子类)的三种方式

    java解析遍历List集合(其实现子类)的三种方式 1 使用迭代器对象 1.1 底层 1.1.1 List接口继承了Collection接口 1.1.2 而Collection接口又继承了Itera ...

最新文章

  1. java的高级特性_java的高级特性_for
  2. 重磅!SCI顶级牛刊《Science》合集(2018~2020年度)
  3. 敏捷个人: 使用必须、应该、可以来确定每天事情的优先级
  4. 使用SQL Server数据工具进行SQL单元测试
  5. POJ3359 UVA1209 LA3173 Wordfish【Ad Hoc】
  6. 如何让Div层悬浮在Flash Object对象之上(转载)
  7. 拖放drag drop(PyQt或Qt for python)
  8. C语言学习心得 Caiwentao
  9. 转贴:操盘手心理训练手册
  10. 航拍VR全景怎么拍摄制作?航拍VR全景制作软件有哪些?
  11. 数字图像处理与Python实现-Scikit-Image-图像滤波(三)
  12. netlink实现驱动和应用层通信
  13. 四象限工作法:四象限时间管理法则及四象限工作法软件
  14. EventBus 3.0 事件公交车
  15. 【语义分割】语义分割经典模块
  16. 基因相关性——字符串入门
  17. 015利用脑电图信号预测癫痫发作的长短期记忆深度学习网络-2018(270引用)
  18. DirectX SDK(June 2010)安装提示S1023报错的解决方法.
  19. 【个人项目】东北大学软件学院2020级2021年夏季实训项目——东软颐养社区系统
  20. 消除VS2010创建C/C++项目时自动生成的臃肿文件的方法

热门文章

  1. ElasticSearch-6.8.11实践笔记
  2. 服务器虚拟kvm是什么意思,服务器 配置虚拟kvm功能
  3. 一个程序员的平凡日常
  4. python爬虫猫眼电影票房_python爬取猫眼电影top100排行榜
  5. 【计算机图形学】基于OpenGL的中点Bresenham算法画直线
  6. 微信小程序调用update更新数据库数据无效
  7. STM32-RS485通信软硬件实现
  8. WPS之Excel表格如何设置下拉选项
  9. CentOS7密码忘记如何强制修改root密码
  10. 遇见狂神说HTML笔记1