你的位置:首页 > Java教程

[Java教程]poi生成word文件


一、简介
  对于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-oo

二、实例

  1、依赖如下:

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

  2、示例代码如下:

 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.open 17 import org.open 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 }

  3、生成word如下所示