Apache POI XWPF

 
 

Java API برای Word OOXML Documents

راه حل منبع باز برای ایجاد، خواندن، ویرایش و تبدیل فایل های Microsoft Word DOCX در برنامه های جاوا.

Apache POI XWPF قابلیت خواندن و نوشتن فرمت فایل Microsoft Word 2007 DOCX را فراهم می کند. XWPF دارای یک API هسته نسبتاً پایدار است که دسترسی به بخش های اصلی یک فایل Word DOCX را فراهم می کند. می‌توان از آن برای استخراج متن اصلی و خاص، دستکاری سرصفحه و پاورقی، دستکاری متن و ویژگی‌های سبک استفاده کرد. 

Apache POI XWPF برای تولید فایل و ویرایش اسناد مایکروسافت ورد، قالب بندی متن و پاراگراف، درج تصویر، ایجاد و تجزیه جدول، ویژگی های ادغام ایمیل، مدیریت عناصر فرم، و موارد دیگر شهرت بیشتری دارد.

Previous Next

شروع کار با Apache POI XWPF

اول از همه، شما باید کیت توسعه جاوا (JDK) را روی سیستم خود نصب کنید. اگر قبلاً آن را دارید، به صفحه دانلود POI Apache بروید تا آخرین نسخه پایدار را در یک آرشیو دریافت کنید. محتویات فایل ZIP را در هر دایرکتوری که از آنجا می توان کتابخانه های مورد نیاز را به برنامه جاوا شما پیوند داد استخراج کنید. این همه است!

ارجاع به POI Apache در پروژه جاوا مبتنی بر 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 مایکروسافت ورد موجود را بارگذاری کنند تا آن را مطابق با نیازهای برنامه خود ویرایش کنند. به شما امکان می دهد پاراگراف های جدید اضافه کنید، متن را وارد کنید، تراز و حاشیه متن را اعمال کنید، استایل متن را تغییر دهید و موارد دیگر.

یک فایل 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 به توسعه دهندگان جاوا اجازه می دهد تا سرصفحه ها و پاورقی های سفارشی را به اسناد 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);
      }
    }
  }
}
 فارسی