1. Des produits
  2.   Traitement de texte
  3.   Java
  4.   Apache POI XWPF

Apache POI XWPF

 
 

API Java pour documents Word OOXML

Solution Open Source pour créer, lire, modifier et convertir des fichiers Microsoft Word DOCX dans des applications Java.

Apache POI XWPF fournit la fonctionnalité de lecture et d'écriture au format de fichier Microsoft Word 2007 DOCX. XWPF a une API de base assez stable, donnant accès aux parties principales d'un fichier Word DOCX. Il peut être utilisé pour l'extraction de texte de base et spécifique, la manipulation de l'en-tête et du pied de page, la manipulation de texte et les fonctionnalités de style. 

Apache POI XWPF est plus réputé pour la génération de fichiers Microsoft Word et l'édition de documents, le formatage de texte et de paragraphes, l'insertion d'images, la création et l'analyse de tableaux, les fonctionnalités de fusion et publipostage, la gestion des éléments de formulaire, et bien plus encore.

Previous Next

Premiers pas avec Apache POI XWPF

Tout d'abord, vous devez avoir le kit de développement Java (JDK) installé sur votre système. Si vous l'avez déjà, rendez-vous sur la page de téléchargement d'Apache POI pour obtenir la dernière version stable dans une archive. Extrayez le contenu du fichier ZIP dans n'importe quel répertoire à partir duquel les bibliothèques requises peuvent être liées à votre programme Java. C'est tout!

Référencer Apache POI dans votre projet Java basé sur Maven est encore plus simple. Tout ce dont vous avez besoin est d'ajouter la dépendance suivante dans votre pom.xml et de laisser votre IDE récupérer et référencer les fichiers Apache POI Jar.

Dépendance Apache POI Maven

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>poi</artifactId>
  <version>4.1.0</version>
</dependency>

Générer et modifier des documents Word à l'aide de l'API Java

Apache POI XWPF permet aux programmeurs de logiciels de créer de nouveaux documents Word au format de fichier DOCX. Les développeurs peuvent également charger un fichier Microsoft Word DOCX existant pour le modifier en fonction des besoins de leur application. Il vous permet d'ajouter de nouveaux paragraphes, d'insérer du texte, d'appliquer l'alignement et les bordures du texte, de modifier le style du texte, etc.

Générer un fichier DOCX à partir de zéro

// initialize a blank document
XWPFDocument document = new XWPFDocument();
// create a new file
FileOutputStream out = new FileOutputStream(new File("document.docx"));
// create a new paragraph paragraph
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
run.setText("File Format Developer Guide - " +
  "Learn about computer files that you come across in " +
  "your daily work at: www.fileformat.com ");
document.write(out);
out.close();

Ajouter un paragraphe, une image et un tableau aux documents Word

Apache POI XWPF permet aux développeurs d'ajouter des paragraphes et des images aux documents Word. L'API fournit également la fonctionnalité permettant d'ajouter des tableaux aux documents DOCX tout en permettant de créer des tableaux simples et imbriqués avec des données définies par l'utilisateur.

Créer un nouveau fichier DOCX avec un tableau

// initialize a blank document
XWPFDocument document = new XWPFDocument();
// create a new file
FileOutputStream out = new FileOutputStream(new File("table.docx"));
// create a new table
XWPFTable table = document.createTable();
// create first row
XWPFTableRow tableRowOne = table.getRow(0);
tableRowOne.getCell(0).setText("Serial No");
tableRowOne.addNewTableCell().setText("Products");
tableRowOne.addNewTableCell().setText("Formats");
// create second row
XWPFTableRow tableRowTwo = table.createRow();
tableRowTwo.getCell(0).setText("1");
tableRowTwo.getCell(1).setText("Apache POI XWPF");
tableRowTwo.getCell(2).setText("DOCX, HTML, FO, TXT, PDF");
// create third row
XWPFTableRow tableRowThree = table.createRow();
tableRowThree.getCell(0).setText("2");
tableRowThree.getCell(1).setText("Apache POI HWPF");
tableRowThree.getCell(2).setText("DOC, HTML, FO, TXT");
document.write(out);
out.close();

Extraire le texte d'un document Word OOXML

Apache POI XWPF fournit la classe spécialisée pour extraire des données de documents Microsoft Word DOCX avec seulement quelques lignes de code. De la même manière, il peut également extraire des titres, des notes de bas de page, des données de tableau, etc. à partir d'un fichier Word.

Extraire du texte d'un fichier Word

// load DOCX file
FileInputStream fis = new FileInputStream("document.docx");
// open file
XWPFDocument file  = new XWPFDocument(OPCPackage.open(fis));
// read text
XWPFWordExtractor ext = new XWPFWordExtractor(file);
// display text
System.out.println(ext.getText());

Ajouter un en-tête et un pied de page personnalisés aux documents DOCX

L'en-tête et le pied de page sont une partie importante du document Word car ils contiennent généralement des informations supplémentaires telles que les dates, les numéros de page, le nom de l'auteur et les notes de bas de page, ce qui aide à garder les documents plus longs organisés et plus faciles à lire. Apache POI XWPF permet aux développeurs Java d'ajouter des en-têtes et des pieds de page personnalisés aux documents Word.

Gérer l'en-tête et le pied de page personnalisés dans le fichier Word DOCX


public class HeaderFooterTable {
  public static void main(String[] args) throws IOException {
    try (XWPFDocument doc = new XWPFDocument()) {
      // Create a header with a 1 row, 3 column table
      XWPFHeader hdr = doc.createHeader(HeaderFooterType.DEFAULT);
      XWPFTable tbl = hdr.createTable(1, 3);
      // Set the padding around text in the cells to 1/10th of an inch
      int pad = (int) (.1 * 1440);
      tbl.setCellMargins(pad, pad, pad, pad);
      // Set table width to 6.5 inches in 1440ths of a point
      tbl.setWidth((int) (6.5 * 1440));
      CTTbl ctTbl = tbl.getCTTbl();
      CTTblPr ctTblPr = ctTbl.addNewTblPr();
      CTTblLayoutType layoutType = ctTblPr.addNewTblLayout();
      layoutType.setType(STTblLayoutType.FIXED);
      BigInteger w = new BigInteger("3120");
      CTTblGrid grid = ctTbl.addNewTblGrid();
      for (int i = 0; i < 3; i++) {
        CTTblGridCol gridCol = grid.addNewGridCol();
        gridCol.setW(w);
      }
      // Add paragraphs to the cells
      XWPFTableRow row = tbl.getRow(0);
      XWPFTableCell cell = row.getCell(0);
      XWPFParagraph p = cell.getParagraphArray(0);
      XWPFRun r = p.createRun();
      r.setText("header left cell");
      cell = row.getCell(1);
      p = cell.getParagraphArray(0);
      r = p.createRun();
      r.setText("header center cell");
      cell = row.getCell(2);
      p = cell.getParagraphArray(0);
      r = p.createRun();
      r.setText("header right cell");
      // Create a footer with a Paragraph
      XWPFFooter ftr = doc.createFooter(HeaderFooterType.DEFAULT);
      p = ftr.createParagraph();
      r = p.createRun();
      r.setText("footer text");
      try (OutputStream os = new FileOutputStream(new File("headertable.docx"))) {
        doc.write(os);
      }
    }
  }
}
 Français