关于Apache-POI的学习与工具类封装日志【0】--阅读起步时的重要信息

为什么做 

为了不要让自己技术生疏,最好的锻炼办法就是多点回忆基础知识,然后赋于代码上,一些代码规范与设计模式还是需要多写代码。我没详细开发过POI底层,作为阅读起步的第0章,暂不涉及代码。

同时,分析了一下比较常用的技术,归列如下:

Word

  • Apache POI:Apache POI是一个流行的Java库,用于操作各种Office文档格式,包括Word文档。通过POI,你可以方便地读取、修改和创建Word文档。
  • Jacob:Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建了一座桥梁。通过Jacob,你可以在Java平台上调用微软Office的COM接口,从而实现对Word文档的操作。然而,Jacob的一个主要限制是它只能在Windows平台上运行,并且服务器上必须安装微软Office。

Excel

  • Apache POI:同样,Apache POI也支持Excel文件的操作。你可以使用POI来读取、写入和修改Excel文件。
  • EasyExcel:EasyExcel是阿里巴巴开源的一个Excel处理框架,它以使用简单、节省内存著称。与POI相比,EasyExcel在解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个解析,从而大大减少了内存消耗。
  • jxl:jxl是韩国人开发的一套解析Excel的Java库,但它不支持xlsx格式,且自2009年后就没有再更新过。

PPT

  • Apache POI:Apache POI也提供了对PPT文件的操作支持。你可以使用POI来创建、读取和修改PPT文件。

需要注意的是,虽然这些工具、框架和包提供了对Office文档的操作能力,但它们各有优缺点。例如,Apache POI是一个功能强大的库,但它在处理大型文件时可能会消耗大量内存。而EasyExcel则通过改进数据读取方式来减少内存消耗。在选择适合项目的工具时,需要根据你的具体需求来权衡这些优缺点。

但可以很明显看出,兼容方向上,POI比较广。

然而关于POI的开发很吃阅读力,目前网上比较少这方面的原生封装与工具类,甚至少介绍,特别是关于Word这种比较常用的文件格式的处理。

就想自己搞一下,看看能吃得下来多少。

起步阅读帮助

Apache-poi官网:POI-HWPF - A Quick Guide (apache.org)

开始阅读

点击左边层级选择单终的javadocs可以看到poi的各个版本api文档链接。我是用的4.0版本进行学习。

6e8487238d9047ffa3e94c43efa33c3d.png

可以在进入版本api文档前先点击Component APIs阅读官方对业务选择的帮助。

533df3c64aad46b08d993cae681575ea.png

左边的简介已经很好说明了开发对象是什么。

 

  • Excel-----HSSF/XSSF(不展开说)
  • PPT-----HSLF/XSLF(不展开说)
  • Word-----HWPF/XWPF

点击Word-(HWPF/XWPF)后,右边对Word-----HWPF/XWPF的一个简介

Overview

HWPF is the name of our port of the Microsoft Word 97(-2007) file format to pure Java. It also provides limited read only support for the older Word 6 and Word 95 file formats.

The partner to HWPF for the new Word 2007 .docx format is XWPF. Whilst HWPF and XWPF provide similar features, there is not a common interface across the two of them at this time.

Both HWPF and XWPF could be described as "moderately functional". For some use cases, especially around text extraction, support is very strong. For others, support may be limited or incomplete, and it may be necessary to dig down into low-level code. Error checking may be missing in places, so it may be possible to accidentally generate invalid files. Enhancements to fix such things are generally very well received!

As detailed in the Components Page, HWPF is contained within the poi-scratchpad-XXX.jar, while XWPF is in the poi-ooxml-XXX.jar. You will need to ensure you include the appropriate jars (and their dependencies!) in your classpath to use HWPF or XWPF.

Please note that in version 3.12, due to a bug, you might need to include poi-scratchpad-XXX.jar when using XWPF. This has been fixed again for the next release as there should not be such a dependency.

大概是在跟你说:

  • Microsoft Word 97(-2007)文件:老文件格式了,也就是.doc。一般用的是HWPF对象处理。
  • 新文件格式:也就是.docx格式。HWPF 的对应组件是 XWPF。(有一说一,它那段“HWPF 的对应组件是 XWPF。虽然 HWPF 和 XWPF 提供了类似的功能,但目前两者之间没有共同的接口。”不是很明白它的意思,是想说:HWPF有一个内部类是XWPF?还是XWPF是HWPF的子类或者实现?或者XWPF有一个属性是XWPF?总之它们并不来自同一个父类或者接口。无所谓,源码后面再看。)

综上可以理解开发路程:先有的HWPF,用来处理.doc文档,后面有了.docx文档,就多了个XWPF。那么,我们就明确了到时候用以哪个主要对象为阅读目标。

更快的上手

官网提供了实例代码。

HWPF示例代码:asf - Revision 1917882: /poi/trunk/poi-examples/src/main/java/org/apache/poi/examples/hwpf

XWPF示例代码;

asf - Revision 1917823: /poi/trunk/poi-examples/src/main/java/org/apache/poi/examples/xwpf

并且上述的:

HWPF的主要入口点是HWPFDocument,在后续版本中,它可能会被拆分为两个不同的接口(即可能为4.0.x后的其他版本)。

XWPF的主要入口点是XWPFDocument。从这里,你可以获取段落、图片、表格、节、页眉等。

接下来会开始阅读API文档、实例代码、尝试使用与分享心得。

 

 

  • 30
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值