使用POI生成word文档的table表格

这篇具有很好参考价值的文章主要介绍了使用POI生成word文档的table表格。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用POI生成word文档的table表格

1. 引入maven依赖

		<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>4.1.2</version>
        </dependency>

2. 生成table的两种方式介绍

2.1 生成一行一列的table

//生成一行一列的table
XWPFTable table = document.createTable();
//添加列
table.getRow(0).addNewTableCell();
//添加行(添加的新行默认就是总共的列数)
table.createRow();

测试Demo:CreateTableDemo1.java

package com.poi.word.demo;


import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge;

import java.io.FileOutputStream;

public class CreateTableDemo1 {
    public static void main(String[] args) throws Exception {
        XWPFDocument document = new XWPFDocument();

        //默认创建一行一列table
        XWPFTable table = document.createTable();
        table.setWidth("100%");

        XWPFTableRow first_row = table.getRow(0);
        XWPFTableCell first_Row_first_Cell = first_row.getCell(0);
        first_Row_first_Cell.setText("我是第一行第一列");

        //第一行添加一列
        first_row.addNewTableCell().setText("我是第一行第二列");

        //创建第二行
        XWPFTableRow snd_row = table.createRow();
        snd_row.getCell(0).setText("第二行,第一列");
        snd_row.getCell(1).setText("第二行,第二列");

        //创建第三行
        XWPFTableRow trd_row = table.createRow();
        XWPFParagraph trd_row_first_paragraph = trd_row.getCell(0).getParagraphs().get(0);
        XWPFRun trdRowFirstCellRun = trd_row_first_paragraph.createRun();
        trdRowFirstCellRun.setFontSize(14);
        trdRowFirstCellRun.setBold(true);
        trdRowFirstCellRun.setText("第三行,第一列");

        trd_row.getCell(1).setText("第三行,第二列");

        //创建第四行
        XWPFTableRow row4 = table.createRow();
        row4.getCell(0).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
        row4.getCell(1).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
        row4.getCell(0).setText("第四行");

        FileOutputStream out = new FileOutputStream("D:\\poiword\\create_table1.docx");
        document.write(out);
        out.close();
        document.close();
    }
}

生成结果:
使用POI生成word文档的table表格,java,word,poi,java

2.2 生成固定行列的table

//生成3行5列的table
XWPFTable table2 = document.createTable(3, 5);

测试Demo:

package com.poi.word.demo;


import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;

import java.io.FileOutputStream;

public class CreateTableDemo2 {

    public static void main(String[] args) throws Exception {
        XWPFDocument document = new XWPFDocument();
        XWPFTable table2 = document.createTable(3, 5);
        table2.setWidth("100%");
        for(int i=0; i<3; i++){
            XWPFTableRow t2tRow = table2.getRow(i);
            for(int j=0; j<5; j++){
                if(i==1){
                    XWPFRun t2Row2Run = t2tRow.getCell(j).getParagraphs().get(0).createRun();
                    t2Row2Run.setFontSize(10);
                    t2Row2Run.setBold(true);
                    t2Row2Run.setText("第"+(i+1)+"行,第"+(j+1)+"列");
                }else{
                    t2tRow.getCell(j).setText("第"+(i+1)+"行,第"+(j+1)+"列");
                }

            }
        }

        FileOutputStream out = new FileOutputStream("D:\\poiword\\create_table2.docx");
        document.write(out);
        out.close();
        document.close();
    }
}

生成结果:
使用POI生成word文档的table表格,java,word,poi,java

2.3 table合并列

row4.getCell(0).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
row4.getCell(1).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);

2.4 创建多个table存在的问题

使用POI生成word文档的table表格,java,word,poi,java
创建的两个table输出时候合并成了一个table,而且第一个table的宽度也变成了第二个table前两列的宽度。

解决方法:

  1. 添加空段落
    XWPFParagraph paragraph1 = document.createParagraph();
  2. 添加分页(会让两个table在不同的页面)
    document.createParagraph().setPageBreak(true); document.createParagraph().createRun().addBreak(BreakType.PAGE);//推荐方式

添加空段落的解决方法Demo:

package com.poi.word.demo;


import org.apache.poi.xwpf.usermodel.*;

import java.io.FileOutputStream;

public class GenWordTableDemo2 {

    public static void main(String[] args) throws Exception {
        XWPFDocument document = new XWPFDocument();

        //默认创建一行一列table
        XWPFTable table = document.createTable();
        table.setWidth("100%");

        XWPFTableRow first_row = table.getRow(0);
        XWPFTableCell first_Row_first_Cell = first_row.getCell(0);
        first_Row_first_Cell.setText("我是第一行第一列");

        //第一行添加一列
        first_row.addNewTableCell().setText("我是第一行第二列");

        //创建第二行
        XWPFTableRow snd_row = table.createRow();
        snd_row.getCell(0).setText("第二行,第一列");
        snd_row.getCell(1).setText("第二行,第二列");

        //创建第三行
        XWPFTableRow trd_row = table.createRow();
        XWPFParagraph trd_row_first_paragraph = trd_row.getCell(0).getParagraphs().get(0);
        XWPFRun trdRowFirstCellRun = trd_row_first_paragraph.createRun();
        trdRowFirstCellRun.setFontSize(14);
        trdRowFirstCellRun.setBold(true);
        trdRowFirstCellRun.setText("第三行,第一列");

        trd_row.getCell(1).setText("第三行,第二列");

        XWPFParagraph paragraph1 = document.createParagraph();

        //分页的两种方式
        //document.createParagraph().setPageBreak(true);
        //document.createParagraph().createRun().addBreak(BreakType.PAGE);//推荐方式

        /**
         * 第2个table
         */
        XWPFTable table2 = document.createTable(3, 5);
        table2.setWidth("100%");
        XWPFTableRow t2FirstRow = table2.getRow(0);
        for(int i=0; i<3; i++){
            XWPFTableRow t2tRow = table2.getRow(i);
            for(int j=0; j<5; j++){
                if(i==1){
                    XWPFRun t2Row2Run = t2tRow.getCell(j).getParagraphs().get(0).createRun();
                    t2Row2Run.setFontSize(10);
                    t2Row2Run.setBold(true);
                    t2Row2Run.setText("第"+(i+1)+"行,第"+(j+1)+"列");
                }else{
                    t2tRow.getCell(j).setText("第"+(i+1)+"行,第"+(j+1)+"列");
                }

            }
        }

        FileOutputStream out = new FileOutputStream("D:\\poiword\\gen_word2.docx");
        document.write(out);
        out.close();
        document.close();

    }
}

效果:
使用POI生成word文档的table表格,java,word,poi,java文章来源地址https://www.toymoban.com/news/detail-823475.html

到了这里,关于使用POI生成word文档的table表格的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • poi-tl导出word复杂表格(单元格合并,生成复杂表格)

    官方文档地址:http://deepoove.com/poi-tl/ 源码地址:https://github.com/Sayi/poi-tl poi-tl(poi template language)是Word模板引擎,使用Word模板和数据创建很棒的Word文档。 最近在做项目时候有一个关于导出Word的文件的需求,需要导出的word文件较大,并且格式比较复杂,使用poi-tl可以很好的

    2024年02月16日
    浏览(31)
  • Java使用poi-tl生成word模板-动态数据列表

    Java使用poi-tl生成word模板-动态数据列表 第一步,添加poi-tl的依赖 第二步,准备word模板文件             模板中文本信息可以用    {{  }}   标签指定             例如在word文档中写入:{{var}} //会将word文档中的对位置的标签替换为map中的数据             模板

    2024年02月14日
    浏览(32)
  • java 使用POI-TL根据word模版,生成word文件,含图片,富文本。

    1.引入mavna坐标` 2 .poi-tl-ext插件主要用于富文本内容格式在word展现 3.word模版创建 3.具体代码实现 4.本文的miniourl路径实质为网络路径的文件。

    2024年02月16日
    浏览(44)
  • Java POI导出富文本的内容到word文档

    当创建使用富文本编辑器,操作完的数据,传输到后台都是带有html标签的。 如:h1标题头/h1h2第二个标题/h2a href=\\\"www.baidu.com\\\"百度搜索/a 我们想把富文本数据转换为Word内容。 Word是完全支持html标签的,但是我们获取到的富文本内容并不是完整的html代码,所有我们需要先补全

    2024年02月09日
    浏览(38)
  • Java利用POI-TL模板导出Word文档

    本文详细介绍了如何使用POI-TL,一个基于Apache POI的Word模板引擎,来导出Word文档。文章内容包括POI-TL的基本介绍,为什么选择POI-TL,以及如何使用POI-TL来处理文本、图片、表格、列表、嵌套、条件判断显示、非空集合循环和图表等内容。

    2024年02月09日
    浏览(89)
  • 使用poi-tl向word插入图片、文本、表格行循环

    工作中难免会向word中操作数据,本文主要介绍poi-tl的使用,先来看效果图 核心介绍: 标签 1、插入文本标签 : {{var}} 2、插入图片标签: {{@var}} 操作步骤: 1、引入依赖 2、Java核心代码 官方网址:http://deepoove.com/poi-tl/ 1、准备模版,定义好需要的标签 2、查询模版 3、获取需要填

    2024年02月05日
    浏览(87)
  • JAVA poi-tl 制作word模板 表格数据行循环 带有复选框勾选的表格

            java项目实际开发中经常会遇到制作word表单且表格数据行循环功能,甚至带有复选框勾选功能,本文简单介绍如何制作模板以及使用poi-tl生成word。 提示:以下是本篇文章正文内容,下面案例可供参考 如果只用到word那么需要导入的依赖如下(本案例只需要如下2个依

    2024年04月12日
    浏览(23)
  • Java POI导出Word、Excel、Pdf文档(可在线预览PDF)

    1、导入依赖Pom.xml        dependency             groupIdorg.apache.poi/groupId             artifactIdpoi/artifactId             version3.14/version         /dependency 2、Controller   3、Service a、pdfService b、wordService c、excelService  4、Utils 5、模板截图   6、前端

    2024年02月08日
    浏览(34)
  • 根据模板动态生成word(三)使用poi-tl生成word

    @ 目录 一、前言 1、什么是poi-tl 2、官方信息 2.1 源码仓库 2.2 中文文档 2.3 开源协议 3、poi-tl的优势 3.1 poi-tl和其他模板引擎的对比 3.2 poi-tl Word模板引擎支持的功能 二、基本的使用配置 1、引入依赖 1.1 Maven 1.2 Gradle 2、配置 2.1 新建配置 2.2 标签前后缀替换 2.3 加载模板 2.4 填充数

    2024年02月13日
    浏览(36)
  • poi-tl的使用(动态表格的生成)

    注意apache.poi版本要对应 创建两个文件夹,一个是用来存储模板文件,另一个是用来存储生成的文件 准备一个word模板,命名为test.docx, 注意,{{}}是官方指定的格式,也可以自定义。 [ ] 是可替换的属性 可以是多个 代码 生成文件 参考: 使用最全 讲解最全

    2024年02月13日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包