java中的getText()。replaceAll()出错

时间:2017-01-05 15:11:01

标签: java apache-poi gettext illegalargumentexception replaceall

我从WordExtractor类(apache POI)中提取文本,但是我对某些.doc文件有错误。调试,我看到问题所在的行是最后一行:

HWPFDocument docx = new HWPFDocument(new FileInputStream(file));
WordExtractor we = new WordExtractor(docx);
String T = we.getText().replaceAll("\\n", " ").replaceAll("\\r", " ");

对于大多数.docx.doc个文件,它可以正常工作。

错误消息是:

Exception in thread "main" java.lang.RuntimeException: 
java.lang.IllegalArgumentException: The end (4958) must not be before the start (4990)

我该如何解决?

1 个答案:

答案 0 :(得分:1)

来自docs的XWPFWordExtractor:

  

Helper类,用于从OOXML Word文件中提取文本

所以这是你的问题:)来自docs的解决方案:

  

对于Word 97中的.doc文件 - Word 2003,在暂存器中有   org.apache.poi.hwpf.extractor.WordExtractor,它将返回文本   为您的文件。

     

使用POI 3.7的用户还可以从旧版本中提取简单的文本内容   Word 6和Word 95文件,使用scratchpad类   org.apache.poi.hwpf.extractor.Word6Extractor。

     

对于.docx文件,相关的类是   org.apache.poi.xwpf.extractor.XPFFWordExtractor