POI 技术如何实现对 Word 和 Excel 的读写操作?POI 技术相对其他同类型技术的优劣势又是哪些?怎样实现复杂的 Excel 读写操作?POI 对于 Word 和 Excel 有足够友好吗?这个 Chat,带领大家使用免费却实用的 POI 技术,实现几种日常通用的业务台账操作。
本场 Chat 主要内容:
- POI 技术优劣介绍。
- POI 导出 Excel。
- 实现批量导入功能。
- POI 对于 Word 的读写。
- 更多拓展想法。
Apache POI 简介
Apache POI 是用 Java 编写的免费开源的跨平台的 Java API,Apache POI 提供 API 给 Java 程式对 Microsoft Office(Excel、WORD、PowerPoint、Visio 等,主要实现用于 Excel)格式档案读和写的功能,POI 为 “ Poor Obfuscation Implementation ” 的首字母缩写,意为“简洁版的模糊实现”。
POI 技术优劣介绍
Microsoft 的 Office 系列产品拥有大量的用户,其中 Word、Excel 也成为办公文件的首选。在 Java 中,已经有很多对于 Word、Excel 的读写的解决方案,其中开源免费好用、用户量较大的就是 Apache 的 POI。
官方网站:
http://poi.apache.org/index.html
API文档:
http://poi.apache.org/apidocs/index.html
Office 系列产品的 java 读写插件的项目有很多:
docx4j:是一个解压的 docx 包(docx 本身是 zip 包)和解析 WordprocessingML 格式 XML 的 Java 库 。 最新版本的 docx4j 也支持 PowerPoint pptx 文件。但方法实现过于底层,国内相关文档说明特别少,而很少被人熟知。
PageOffice:国产的 Office 插件,虽然功能接口虽然没有没有 poi 的多,但是开发调用简单,特别是对 word 的读写操作比 POI 好用,毕竟 POI 的中文文档太少,经常拿来用的就是做在线预览了。不过要安装 PageOffice 控件,收费。
Jxl:开源世界中,有两套比较有影响的 API 可供使用,一个是 POI,一个是 jExcelAPI。纯 Java 的,并不依赖 Windows 系统,即使运行在 Linux下,它同样能够正确的处理 Excel 文件。图形和图表的支持很有限,而且仅仅识别 PNG 格式。网上有人做过测试,jxl 内存消耗也会更小,大数据量的时候建议使用 jxl,但是实现的功能 POI 比 jxl 更加完善。功能复杂或是有拓展需求的,建议使用 POI。
POI:相较于其他插件,POI 的用户量是最多的。简单易用,功能完善,项目开源,对 Excel 的读写操作功能十分强大,设置到单元格样式、标注脚注、设置打印 、插入图片、超链接等等,基本满足业务的所有需求。(网上有人说 POI 会出现莫名的 bug,数据替换参数总有失败,暂时没发现这种 bug了。)不过 POI 操作 word 的时候,只能创建简单的 word 文档,不过样式文字的读写操作也是完全满足的,只是相较操作 Excel 不算友好。POI 导出数据量过大的时候,容易造成内存溢出。
包名称说明
HSSF:提供读写 Microsoft Excel XLS 格式档案的功能。
XSSF:提供读写 Microsoft Excel OOXML XLSX 格式档案的功能。
HWPF:提供读写 Microsoft Word DOC 格式档案的功能。
HSLF:提供读写 Microsoft PowerPoint 格式档案的功能。
HDGF:提供读 Microsoft Visio 格式档案的功能。
HPBF:提供读 Microsoft Publisher 格式档案的功能。
HSMF:提供读 Microsoft Outlook 格式档案的功能。
其中,POI EXCEL 文档结构类:
HSSFWorkbook excel文档对象。
HSSFSheet excel的sheet HSSFRow excel的行。
HSSFCell excel的单元格 HSSFFont excel字体。
HSSFName 名称 HSSFDataFormat 日期格