poi 读取word标题_POI读取word文档

本文介绍如何利用Apache POI库读取Word文档,包括HWPF和XWPF模块的应用,以及简单示例代码展示按段落读取文字内容。适用于处理Word 97-2007 (.doc) 和 Word 2007+ (.docx) 文件。
摘要由CSDN通过智能技术生成

最近做了一个word文档导入的功能,但是因为项目紧急,所以做的很粗糙。好不容易周末了,就自己撸了一会代码,想把他做成一个通用的工具,以备以后用到时直接黏贴。

概述

POI 的起源

POI是apache的一个开源项目,他的起始初衷是处理基于Office Open XML标准(OOXML)和Microsoft OLE 2复合文档格式(OLE2)的各种文件格式的文档,而且对于读和写都有支持。可以说是JAVA处理OFFICE文档的首选工具了。

HWPF和XWPF

POI操作word文档的两个主要模块就是HWPF和XWPF。

HWPF是操作Microsoft Word 97(-2007)文件的标准API入口。它还支持对旧版Word 6和Word 95文件对有限的只读功能。

XWPF是操作Microsoft Word 2007文件的标准API入口。

读取word文档

其实,POI对于word文档的读写操作提供了许多API可用,这里只提供最简单的按段落读取文字内容的demo,对于图片读取或表格的读取,以后再更新。

maven依赖

com.google.guava

guava

24.0-jre

org.apache.poi

poi-scratchpad

3.17

org.apache.poi

poi-ooxml

3.17

public static List readWordFile(String path) {

List contextList = Lists.newArrayList();

InputStream stream = null;

try {

stream = new FileInputStream(new File(path));

if (path.endsWith(".doc")) {

HWPFDocument document = new HWPFDocument(stream);

WordExtractor extractor = new WordExtractor(document);

String[] contextArray = extractor.getParagraphText();

Arrays.asList(contextArray).forEach(context -> contextList.add(CharMatcher.whitespace().removeFrom(context)));

extractor.close();

document.close();

} else if (path.endsWith(".docx")) {

XWPFDocument document = new XWPFDocument(stream).getXWPFDocument();

List paragraphList = document.getParagraphs();

paragraphList.forEach(paragraph -> contextList.add(CharMatcher.whitespace().removeFrom(paragraph.getParagraphText())));

document.close();

} else {

LOGGER.debug("此文件{}不是word文件", path);

}

} catch (IOException e) {

e.printStackTrace();

} finally {

if (null != stream) try {

stream.close();

} catch (IOException e) {

e.printStackTrace();

LOGGER.debug("读取word文件失败");

}

}

return contextList;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值