poi生成word文件

1、簡介
  對於poi來講,poi能夠完成對word、excel、ppt的處理。word目前有兩種文件格式,一種是doc後綴、另外一種是docx後綴的。2007以前的版本都是doc後綴的,這種格式poi使用HWPF進行處理。HWPF也能有限多地對舊的word6和word95格式的文件處理提供支持。2007(包括)以後都是docx後綴的,poi使用XWPF進行處理。HWPF 和 XWPF的特性有些類似,可是目前二者沒有共用接口。
  HWPF和XWPF能夠被描述爲「適度功能」。對於一些例子來講,管理文本的提取,提供強有力的支持。對於其餘萊斯,支持是有限或不完整的,須要深刻研究低級別的代碼。錯誤檢測已經被移除,全部可能會建立格式錯誤的文件。
  HWPF 包含在poi-scratchpad-XXX.jar包中,而XWPF 包含在 poi-ooxml-XXX.jar包中。咱們能夠根據咱們的須要來將這些包添加都classpath裏面。HWPF與XWPF網址爲:http://poi.apache.org/document/index.html 。html

2、實例java

  一、依賴以下:apache

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.12</version>
    </dependency>    
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.12</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-scratchpad</artifactId>
    <version>3.12</version>
</dependency>

  二、示例代碼以下:app

  1 package com.test.word;
  2 
  3 import java.io.FileOutputStream;
  4 import java.io.IOException;
  5 import java.math.BigInteger;
  6 import java.util.List;
  7 
  8 import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
  9 import org.apache.poi.xwpf.usermodel.TextAlignment;
 10 import org.apache.poi.xwpf.usermodel.XWPFDocument;
 11 import org.apache.poi.xwpf.usermodel.XWPFParagraph;
 12 import org.apache.poi.xwpf.usermodel.XWPFRun;
 13 import org.apache.poi.xwpf.usermodel.XWPFTable;
 14 import org.apache.poi.xwpf.usermodel.XWPFTableCell;
 15 import org.junit.Test;
 16 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblPr;
 17 import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth;
 18 
 19 /**
 20  * 建立word文檔
 21  */
 22 public class WordCreate { 
 23     /**
 24      * 2007word文檔建立
 25      */
 26     @Test
 27     public void createWord2007() {
 28         XWPFDocument doc = new XWPFDocument();
 29         XWPFParagraph p1 = doc.createParagraph();
 30 
 31         XWPFTable table = doc.createTable(11, 4);
 32         // CTTblBorders borders=table.getCTTbl().getTblPr().addNewTblBorders();
 33         CTTblPr tblPr = table.getCTTbl().getTblPr();
 34         tblPr.getTblW().setType(STTblWidth.DXA);
 35         tblPr.getTblW().setW(new BigInteger("7000"));
 36 
 37         // 設置上下左右四個方向的距離,能夠將表格撐大
 38         table.setCellMargins(20, 20, 20, 20);
 39 
 40         // 表格
 41         List<XWPFTableCell> tableCells = table.getRow(0).getTableCells();
 42 
 43         XWPFTableCell cell = tableCells.get(0);
 44         XWPFParagraph newPara = new XWPFParagraph(cell.getCTTc().addNewP(), cell);
 45         XWPFRun run = newPara.createRun();
 46         /** 內容居中顯示 **/
 47         newPara.setAlignment(ParagraphAlignment.CENTER);
 48         // run.getCTR().addNewRPr().addNewColor().setVal("FF0000");/**FF0000紅色*/
 49         // run.setUnderline(UnderlinePatterns.THICK);
 50         run.setText("第一 數據");
 51 
 52         tableCells.get(1).setText("第一 數據");
 53         tableCells.get(2).setText("第一 據");
 54         tableCells.get(3).setText("第 據");
 55 
 56         tableCells = table.getRow(1).getTableCells();
 57         tableCells.get(0).setText("第數據");
 58         tableCells.get(1).setText("第一 數據");
 59         tableCells.get(2).setText("第一 據");
 60         tableCells.get(3).setText("第 據");
 61 
 62         // 設置字體對齊方式
 63         p1.setAlignment(ParagraphAlignment.CENTER);
 64         p1.setVerticalAlignment(TextAlignment.TOP);
 65 
 66         // 第一頁要使用p1所定義的屬性
 67         XWPFRun r1 = p1.createRun();
 68 
 69         // 設置字體是否加粗
 70         r1.setBold(true);
 71         r1.setFontSize(20);
 72 
 73         // 設置使用何種字體
 74         r1.setFontFamily("Courier");
 75 
 76         // 設置上下兩行之間的間距
 77         r1.setTextPosition(20);
 78         r1.setText("標題");
 79 
 80         FileOutputStream out;
 81         try {
 82             out = new FileOutputStream("c:/test/word2007.docx");
 83             // 如下代碼可進行文件下載
 84             // response.reset();
 85             // response.setContentType("application/x-msdownloadoctet-stream;charset=utf-8");
 86             // response.setHeader("Content-Disposition",
 87             // "attachment;filename=\"" + URLEncoder.encode(fileName, "UTF-8"));
 88             // OutputStream out = response.getOutputStream();
 89             // this.doc.write(out);
 90             // out.flush();
 91 
 92             doc.write(out);
 93             out.close();
 94         } catch (IOException e) {
 95             e.printStackTrace();
 96         }
 97         System.out.println("success");
 98     }
 99 
100 }

  三、生成word以下所示字體

相關文章
相關標籤/搜索