poi生成word文件

简介: 一、简介   对于poi来说,poi可以完成对word、excel、ppt的处理。word目前有两种文件格式,一种是doc后缀、另一种是docx后缀的。2007之前的版本都是doc后缀的,这种格式poi使用HWPF进行处理。

一、简介
  对于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如下所示

目录
相关文章
|
Kubernetes 数据可视化 数据安全/隐私保护
云服务器CentOS8.2Docker图形化管理工具Portainer安装部署
云服务器CentOS8.2Docker图形化管理工具Portainer安装部署
742 0
云服务器CentOS8.2Docker图形化管理工具Portainer安装部署
|
Java 索引
SpringBoot2.3.x整合ElasticSearch7.6.2 实现PDF,WORD全文检索
本文使用SpringBoot2.3.x + ElasticSearch7.6.2 实现对PDF,WORD进行全文检索 实现了对文件内容快速搜索
1568 0
SpringBoot2.3.x整合ElasticSearch7.6.2 实现PDF,WORD全文检索
|
Kubernetes Java 调度
Kubernetes中的Pod垃圾回收策略是什么
Kubernetes中的Pod垃圾回收策略是什么
|
8月前
|
数据采集 分布式计算 监控
智能数据建设与治理 Dataphin:阿里云的一站式数据治理利器
阿里云Dataphin是一款企业级数据治理与智能建设平台,专注于解决数据孤岛、质量低下和开发效率低等问题。它提供从数据集成、规范建模、智能开发到质量监控及资产管理的全生命周期解决方案,特别适用于中大型企业构建数据中台或推进数字化转型。Dataphin通过自动化生成代码、内置质量规则模板和全局血缘追踪等功能,显著提升数据开发效率与跨团队协作能力。尽管学习曲线较陡峭且资源消耗较高,但其深度集成阿里云生态的优势,使其成为追求规范化数据治理企业的理想选择。推荐已采用阿里云技术栈并具备一定数据团队规模的企业使用。
477 1
|
存储 Java
【数据结构】优先级队列(堆)从实现到应用详解
本文介绍了优先级队列的概念及其底层数据结构——堆。优先级队列根据元素的优先级而非插入顺序进行出队操作。JDK1.8中的`PriorityQueue`使用堆实现,堆分为大根堆和小根堆。大根堆中每个节点的值都不小于其子节点的值,小根堆则相反。文章详细讲解了如何通过数组模拟实现堆,并提供了创建、插入、删除以及获取堆顶元素的具体步骤。此外,还介绍了堆排序及解决Top K问题的应用,并展示了Java中`PriorityQueue`的基本用法和注意事项。
326 5
【数据结构】优先级队列(堆)从实现到应用详解
NSS [NISACTF 2022]babyupload
NSS [NISACTF 2022]babyupload
155 0
|
机器学习/深度学习 数据采集 自然语言处理
Pre-trained Model
“【5月更文挑战第30天】”
589 0
|
安全
二维码知识科普:快速了解二维码的实现原理
二维条码是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图案表示二进制数据,被设备扫描后可获取其中所包含的信息。与一维条码不同的是,二维条码的长度和宽度都可以记载数据,而一维条码仅宽度记载数据。二维条码还有独特的“定位点”和“容错机制”,即使部分条码无法识别或条码受损,也能正确还原条码上的信息。
1151 1
|
存储 JavaScript
vue3搜索功能
vue3搜索功能
645 0
|
算法 搜索推荐 大数据
互联网信息服务算法备案代办服务
算法备案全称是什么?算法备案的全称为互联网信息服务算法备案,为应对不良深度合成技术而导致的算法歧视、大数据杀熟、沉迷推荐诱导等不合理应用,由网信办主导,与公安部、工信部、市监总局一起联合发布出台《互联网信息服务算法推荐管理规定》后的具有强制性的备案制度,旨在规范互联网信息服务推荐算法活动。