Apache POI: Extraire le texte à partir d'un fichier Word en Java

Dans ce tutoriel, nous allons voir deux façons différentes pour lire un fichier Word en java qui porte l'extension doc ou docx, et comment extraire leurs contenus texte.

Avant de commencer, vous devez télécharger l'api Apache POI.

Lecture d'un fichier Word .doc avec WordExtractor

Apache POI utilise la classe WordExtractor qui permet l'extraction du contenu de tout le fichier Word dans chaque page d'un fichier doc. Soyez certain que le fichier a l'extension .doc et date de MS-Word 97-2003. La classe WordExtractor permet l'extraction de tout le texte d'un document Word y compris les paragraphes, tableaux, entête et pied de page dans chaque page.

Vous devez utiliser la méthode getParagraphText() ou getText() pour récupérer le texte du fichier Word, sous forme d'un tableau dont chaque case du tableau contient un paragraphe de type String.

La classe HWPFDocument accepte comme paramètre un flux de lecture vers le fichier. Cette classe joue le rôle d'un seau que nous mettons toute la structure du document dedans.

import java.io.*;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;

public class LireDoc
{
public static void main(String[] args)
{
try
{
File file = new File("nouveaudoc.doc");
FileInputStream fis = new FileInputStream(file.getAbsolutePath());
HWPFDocument document = new HWPFDocument(fis);
 WordExtractor extracteur = new WordExtractor(document);
String[] texte = extracteur.getParagraphText();
for (int i = 0; i < texte.length; i++)
{
if (texte[i] != null)
System.out.println(texte[i]);
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}

Lecture d'un fichier Word .docx avec XWPFWordExtractor

Le document Microsoft Office 2007 utilise le format .docx et stocke les informations(texte, style, couleur, font, etc.) dans un fichier XML. La classe XWPFWordExtractor est utilisée pour extraire le texte de ce fichier nommé OOXML.

Pour obtenir le texte de type String, appelez la méthode XWPFWordExtractor.getText(). Il est clair que la lecture du format .docx est plus facile que l'ancien format .doc.

import java.io.*;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;

public class LireDocx
{
public static void main(String[] args)
{
try
{
File file = new File("nouveaudoc.docx");
FileInputStream fis = new FileInputStream(file.getAbsolutePath());
XWPFDocument document = new XWPFDocument(fis);
 XWPFWordExtractor extracteur = new XWPFWordExtractor(document);
String texte = extracteur.getText();
System.out.println(texte);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}