• 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-ooxml-XXX.jar包中。我们可以根据我们的需要来将这些包添加都classpath里面。HWPF与XWPF网址为:http://poi.apache.org/document/index.html 。

    二、实例

      1、依赖如下:

    <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>

      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.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 }

      3、生成word如下所示

  • 相关阅读:
    关于OCI接口理解
    linux 关闭selinux
    Web 浏览器之事件循环 Event Loop
    Web 浏览器之页面展示原理
    Web 前端工程化(Node、Babel、webpack、Vue、Nginx)
    Web 包管理工具(npm、yarn、cnpm、pnpm)
    kmeans算法
    Django_re_path_使用正则匹配url
    VMware_关机未关闭vm导致显示红叉的处理方法
    Django_发送邮件
  • 原文地址:https://www.cnblogs.com/always-online/p/4801238.html
Copyright © 2020-2023  润新知