我从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)
我该如何解决?
答案 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