POI提取word出错
代码如下
package com.util.extract;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.pdfbox.pdfparser.PDFParser;
import org.apache.pdfbox.util.PDFTextStripper;
import org.apache.poi.POIXMLDocument;
import org.apache.poi.POIXMLTextExtractor;
import org.apache.poi.hslf.HSLFSlideShow;
import org.apache.poi.hslf.model.Slide;
import org.apache.poi.hslf.model.TextRun;
import org.apache.poi.hslf.usermodel.RichTextRun;
import org.apache.poi.hslf.usermodel.SlideShow;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.xmlbeans.XmlException;
public class FileExtractor {
public static String getSuffix(String fileName){
String suffix=fileName.substring(fileName.lastIndexOf(".")+1);
return suffix;
}
public static String wordExtractor(String fileName){
try{
InputStream in = new FileInputStream(fileName);
String text = "";
if(getSuffix(fileName).equals("doc")){
WordExtractor wordExtractor = new WordExtractor(in);
text = wordExtractor.getText();
}else if(getSuffix(fileName).equals("docx")){
OPCPackage opcPackage = POIXMLDocument.openPackage(fileName);
POIXMLTextExtractor ex = new XWPFWordExtractor(opcPackage);
text = ex.getText();
}else if(getSuffix(fileName).equals("pdf")){
PDFParser p = new PDFParser(in);
p.parse();
PDFTextStripper ts = new PDFTextStripper();
text = ts.getText(p.getPDDocument());
}else{
text = "";
}
in.close();
return text;
}catch(IOException e){
e.printStackTrace();
return null;
} catch (XmlException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (OpenXML4JException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
}
测试代码为
public class TestExtractor {
public static void main(String[] args) throws IOException{
String filename = "test.doc";
String content = FileExtractor.wordExtractor(filename);
System.out.println(content);
}
}
提取的文件大小为1.6M,并且不是纯文本,word中还有批注、目录等。
异常为
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 204138
at org.apache.poi.util.LittleEndian.getShort(LittleEndian.java:46)
at org.apache.poi.hwpf.model.ListLevel.<init>(ListLevel.java:120)
at org.apache.poi.hwpf.model.ListFormatOverrideLevel.<init>(ListFormatOverrideLevel.java:48)
at org.apache.poi.hwpf.model.ListTables.<init>(ListTables.java:91)
at org.apache.poi.hwpf.HWPFDocument.<init>(HWPFDocument.java:236)
at org.apache.poi.hwpf.HWPFDocument.<init>(HWPFDocument.java:131)
at org.apache.poi.hwpf.extractor.WordExtractor.<init>(WordExtractor.java:61)
at org.apache.poi.hwpf.extractor.WordExtractor.<init>(WordExtractor.java:53)
at com.util.extract.FileExtractor.wordExtractor(FileExtractor.java:41)
at com.util.extract.TestExtractor.main(TestExtractor.java:17)
不明白是什么原因,大致感觉可能是不是word文件不太大?
分享到:
相关推荐
java poi 实现word文本的替换,支持doc和docx格式的文本替换
注意:先下载开源包poi,把jar文件加入到你的项目里。
pasrer 方法首先将 Word 2007 文档读取到内存中,然后使用 XWPFWordExtractor 来提取文本内容,并将其存储在 String 对象中。然后,pasrer 方法使用 XWPFPicture 来提取图片内容,并将其存储在 List<XWPFPicture> ...
在本文中,我们将深入探讨如何使用Apache POI在Word文档中插入文本和图片,这对于创建动态报告模板尤其有用。 一、Apache POI基础 Apache POI提供了一系列接口和类,用于读写微软的Office文件格式。对于Word处理,...
标题中的“poi读取word 2007简单文本框值”指的是使用Apache POI库来读取Microsoft Word 2007文档中简单文本框内的文本内容。Apache POI是一个流行的开源Java库,用于处理Microsoft Office格式的文件,如Word(.docx...
这是一个POI读取word 2003 和 word 2007的例子 是一个Eclipse工程 下载后直接导入工程 运行 src 目录下的 Test java 类即可 这个 rar 包中包含着 POI 读取word 2003 和 word 2007 所需要的 jar 包 也有需要读取的 ...
使用poi将word读取后替换指定内容后再次生成新word,本人经过测试,拿来即用!
在处理Word文档时,POI使用HPSF(HSMF for POI)来解析和生成文档属性,HWPF用于处理老版本的Word(.doc)文档,XWPF则用于处理新版本的Word(.docx)文档。 转换Word到HTML的核心步骤如下: 1. **读取Word文档**...
POI报表Word导出
3. 文本样式:虽然不能完全保留所有样式,但POI会尽可能地保留文本的基本样式,如字体、大小和颜色。 五、限制与注意事项: 1. 不支持分页:转换后的HTML不会包含Word文档中的分页信息,这可能导致长文档在网页预览...
通过掌握以上知识,你可以利用Apache POI创建功能丰富的Word文档,包括文本、样式、表格、图片等元素,实现自动化报告生成、数据导出等多种应用场景。在实际项目中,根据具体需求,灵活运用POI的API,能够极大地提高...
本文档将详细介绍如何使用 POI 库来读取 Word 文档(包括 .doc 和 .docx 格式)中的文本内容以及提取其中的图片。 #### 二、环境配置与依赖 为了能够顺利地执行示例代码,需要确保项目的 build 环境包含了以下依赖...
Java POI库是一个强大的工具,专门用于处理Microsoft Office格式的文件,包括Word(.doc和.docx)文档。在这个特定的场景中,我们利用POI将Word文档转换为HTML格式,以便于在网页上展示或者进行其他Web相关的操作。...
Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Word、Excel和PowerPoint。在本主题中,我们将深入探讨如何使用POI库来导出Word文档,并进行页眉、页脚和标题的设置。这个过程涉及到对Word...
包括三个文件: 1、poi-2.5.1.jar 2、poi-contrib-2.5.1.jar 3、poi-scratchpad-2.5.1.jar 经过测试可以使用; 另外,附简单应用实例,通过POI提取word内容源代码!
在本场景中,可能涉及读取Word文档中的文本、样式、表格、图像等元素,以便进行进一步的处理或分析。 “试卷数学公式导入wmf图片转成png图片”这部分涉及到两个技术点。首先,试卷通常包含数学公式,这些公式可能以...
在IT行业中,尤其是在文档自动化处理领域,Apache POI是一个非常重要的工具,它允许开发者使用Java来操作Microsoft Office格式的文件,如Word、Excel和PowerPoint。本教程将深入讲解如何利用Apache POI的XWPF模块...
POI无法读取到word每一段所在的页码。我给出了代码和所有的解释,用POI读取word中的页码。也算是小方法了,基本很准确,为什么要加一个基本呢?因为,分页标志符号在第一行为空白行的时候没有分页符!!所以你的文档...
在IT领域,Apache POI是一个广泛使用的开源库,主要用于处理Microsoft Office格式的文件,如Word(.doc/.docx)、Excel(.xls/.xlsx)和PowerPoint(.ppt/.pptx)。本篇将深入探讨如何使用Apache POI库来替换Word...