1

WordExtractorクラス(apache POI)からテキストを抽出していますが、一部の.docファイルでエラーが発生しています。最も.docx.docファイルの場合getText()のエラー。javaのreplaceAll()

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

それが仕事の罰金です:デバッグ、私は問題がある行には、ここで最後のものであることがわかりました。

エラーメッセージは次のとおりです。

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

私はそれを解決することができますか?

+4

でフルスタックトレースを追加してください。 – Berger

+1

通常、正規表現を使用している場合を除き、['replace'](http://docs.oracle.com/javase/8/docs/api/java/lang/String.html#replace-java.lang.CharSequence -java.lang.CharSequence-)を使用します(http://docs.oracle.com/javase/8/docs/api/java/lang/String.html#replaceAll-java.lang.String- java.lang.String-)。 – khelwood

+2

'replaceAll'によって明示的にスローされていないので、' we.getText() 'の呼び出しでなければなりません。 WordExtractorをどのように初期化したか、Word文書が破損しているか、ライブラリにバグがありますかに問題があります。 'we'オブジェクトが作成される行を投稿してください。 – Michael

答えて

1
docsから

XWPFWordExtractor:

の場合:これは彼らのdocsからあなたの問題:)とソリューションです

ファイルOOXML Wordからテキストを抽出する

ヘルパークラスWord 97 - Word 2003の.docファイル、スクラッチパッドには org.apache.poi.hwpf.extractor.WordExtractorがありますあなたの文書にテキスト を返します。

POI 3.7を使用したものも、スクラッチパッドクラス org.apache.poi.hwpf.extractor.Word6Extractorを使用して、95個のファイルをWordの6 古いから、単純なテキストコンテンツを抽出し、Wordことができます。 .docxファイルの場合

、関連するクラスが org.apache.poi.xwpf.extractor.XPFFWordExtractor

+0

こんにちは、はい、私はHWPFの '.doc'ファイルとXWPFの' .docx'ファイルの 'if'文を持っています。しかし残念なことにそれは解決策ではありません。 –

+0

@Bustamiあなたのスニペットにifを含めて、混乱を招くようにしてください。 – jmarkmurphy

+0

@Bustami申し訳ありませんが、あなたの問題は何か分かりません。あなたが悪い抽出プログラムを使用したという問題がありました。あなたはもう1つの抽出プログラムであなたの質問を更新しました。しかし、正確に何が必要ですか? – Hrabosch