Apache POI XWPF

 
 

Java API για Έγγραφα Word OOXML

Λύση ανοιχτού κώδικα για τη δημιουργία, ανάγνωση, επεξεργασία και μετατροπή αρχείων Microsoft Word DOCX σε εφαρμογές Java.

Το Apache POI XWPF παρέχει τη λειτουργία ανάγνωσης και εγγραφής μορφής αρχείου Microsoft Word 2007 DOCX. Το XWPF διαθέτει ένα αρκετά σταθερό API πυρήνα, παρέχοντας πρόσβαση στα κύρια μέρη ενός αρχείου Word DOCX. Μπορεί να χρησιμοποιηθεί για βασική και συγκεκριμένη εξαγωγή κειμένου, χειρισμό κεφαλίδας και υποσέλιδου, χειρισμό κειμένου και λειτουργίες στυλ. 

Το Apache POI XWPF είναι πιο γνωστό για τη δημιουργία αρχείων Microsoft Word και την επεξεργασία εγγράφων, τη μορφοποίηση κειμένου και παραγράφων, την εισαγωγή εικόνων, τη δημιουργία και ανάλυση πινάκων, τις δυνατότητες συγχώνευσης αλληλογραφίας, τη διαχείριση στοιχείων φόρμας και πολλά άλλα.

Previous Next

Ξεκινώντας με το Apache POI XWPF

Πρώτα απ 'όλα, πρέπει να έχετε εγκατεστημένο το Java Development Kit (JDK) στο σύστημά σας. Εάν το έχετε ήδη, προχωρήστε στη σελίδα λήψης του POI του Apache για να λάβετε την πιο πρόσφατη σταθερή έκδοση σε ένα αρχείο. Εξαγάγετε τα περιεχόμενα του αρχείου ZIP σε οποιονδήποτε κατάλογο από όπου μπορούν να συνδεθούν οι απαιτούμενες βιβλιοθήκες με το πρόγραμμα Java σας. Αυτό είναι όλο!

Η αναφορά σε POI του Apache στο έργο Java που βασίζεται στο Maven είναι ακόμα πιο απλή. Το μόνο που χρειάζεστε είναι να προσθέσετε την ακόλουθη εξάρτηση στο pom.xml σας και να αφήσετε το IDE σας να ανακτήσει και να παραπέμψει τα αρχεία Apache POI Jar.

Apache POI Maven Dependency

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

Δημιουργήστε και επεξεργαστείτε έγγραφα του Word χρησιμοποιώντας το Java API

Το Apache POI XWPF επιτρέπει στους προγραμματιστές λογισμικού να δημιουργούν νέα έγγραφα Word σε μορφή αρχείου DOCX. Οι προγραμματιστές μπορούν επίσης να φορτώσουν ένα υπάρχον αρχείο DOCX του Microsoft Word για να το επεξεργαστούν σύμφωνα με τις ανάγκες της εφαρμογής τους. Σας επιτρέπει να προσθέσετε νέες παραγράφους, να εισαγάγετε κείμενο, να εφαρμόσετε στοίχιση κειμένου και περιγράμματα, να αλλάξετε το στυλ κειμένου και πολλά άλλα.

Δημιουργήστε ένα αρχείο DOCX από την αρχή

// 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();

Προσθήκη παραγράφου, εικόνας και πίνακα στα έγγραφα του Word

Το Apache POI XWPF επιτρέπει στους προγραμματιστές να προσθέτουν παραγράφους και εικόνες σε έγγραφα του Word. Το API παρέχει επίσης τη δυνατότητα προσθήκης πινάκων σε έγγραφα DOCX ενώ καθιστά δυνατή τη δημιουργία απλών και ένθετων πινάκων με δεδομένα που ορίζονται από τον χρήστη.

Δημιουργήστε ένα νέο αρχείο DOCX με έναν πίνακα

// 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();

Εξαγωγή κειμένου από έγγραφο Word OOXML

Το Apache POI XWPF παρέχει την εξειδικευμένη κλάση για εξαγωγή δεδομένων από έγγραφα Microsoft Word DOCX με λίγες μόνο γραμμές κώδικα. Με τον ίδιο τρόπο, μπορεί επίσης να εξάγει επικεφαλίδες, υποσημειώσεις, δεδομένα πίνακα και ούτω καθεξής από ένα αρχείο Word.

Εξαγωγή κειμένου από αρχείο 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());

Προσθήκη προσαρμοσμένης κεφαλίδας και υποσέλιδου στα έγγραφα DOCX

Η κεφαλίδα και το υποσέλιδο αποτελούν σημαντικό μέρος του εγγράφου του Word, καθώς συνήθως περιέχουν πρόσθετες πληροφορίες, όπως ημερομηνίες, αριθμούς σελίδων, όνομα συγγραφέα και υποσημειώσεις, που βοηθούν στο να διατηρούνται τα μεγαλύτερα έγγραφα οργανωμένα και πιο ευανάγνωστα. Το Apache POI XWPF επιτρέπει στους προγραμματιστές Java να προσθέτουν προσαρμοσμένες κεφαλίδες και υποσέλιδα σε έγγραφα του Word.

Διαχείριση προσαρμοσμένης κεφαλίδας και υποσέλιδου στο αρχείο 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);
      }
    }
  }
}
 Ελληνικά