java poi 页码_如何使用apache poi获取doc,docx文件中特定单词的行号,页码?

这篇博客讨论了一个Java应用程序的实现,该程序旨在搜索doc和docx文件中的特定单词,并生成包含单词所在页码和行号的报告。作者分享了目前的进展,即能读取文档的段落,但还未找到获取特定单词页码和行号的方法。文章提供了部分代码示例,并指出可能需要根据文本布局计算页码,因为Apache POI 3.10.1没有直接提供此功能。建议使用JEditorPane和EditorKit进行进一步开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我正在尝试创建一个java应用程序,它将搜索所选doc,docx文件中的特定单词并生成一个报告.该报告将包含搜索单词的页码和行号.现在我所取得的成就是我能够逐段阅读doc和docx文件.但我没有找到任何方法来搜索特定的单词并获得该行和&该单词出现的页码.我搜索了很多,但直到现在都没有运气.希望有人知道这样做的方法.

这是我的代码

if(fc.getSelectedFile().getAbsolutePath().contains("docx")) {

File file = fc.getSelectedFile();

FileInputStream fis = new FileInputStream(file.getAbsolutePath());

XWPFDocument document = new XWPFDocument(fis);

List paragraphs = document.getParagraphs();

System.out.println("Total no of paragraph "+paragraphs.size());

for (XWPFParagraph para : paragraphs) {

System.out.println(para.getText());

}

fis.close();

} else {

WordExtractor extractor = null;

FileInputStream fis = new FileInputStream(fc.getSelectedFile());

HWPFDocument document = new HWPFDocument(fis);

extractor = new WordExtractor(document);

String[] fileData = extractor.getParagraphText();

for (int i = 0; i < fileData.length; i++) {

if (fileData[i] != null)

System.out.println(fileData[i]);

}

extractor.close();

}

我正在使用swing,apache poi 3.10.1.

解决方法:

恐怕没有简单的方法可以做到这一点.不存储行和页码,而是根据指定的页面大小,根据文本布局快速计算.该页面定义了文本中的包装位置.

您可以尝试使用适当的EditorKit在JEditorPane中加载文档来实现该功能(例如,参见DocxEditorKit实现的尝试http://java-sl.com/docx_editor_kit.html它提供了基本功能,您可以尝试在此处根据源代码和想法实现您自己的EditorKit).

标签:java,swing,apache-poi

来源: https://codeday.me/bug/20190609/1207185.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值