吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 288|回复: 7
收起左侧

[求助] java poi生成word,对应的表格如何合并?

[复制链接]
qixian 发表于 2024-4-16 14:42
66吾爱币
代码该如何修改,才能达到期望的格式呢?求助各位大佬
[Java] 纯文本查看 复制代码
package com.qts.mytest;
import java.io.FileOutputStream;
 
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge;
 
public class WordExcelTest {
        public static void main(String[] args) throws Exception {
                XWPFDocument document = new XWPFDocument();
                XWPFTable table = document.createTable(5, 6);
                table.setWidth("100%");
                for (int row = 0; row < 5; row++) {
                        for (int column = 0; column < 6; column++) {
                                table.getRow(row).getCell(column).setText(row + "-" + column);
                        }
                }
                // 2,1、2,2 水平合并
                table.getRow(2).getCell(1).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
                table.getRow(2).getCell(2).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
 
                // 3,1、3,2 水平合并
                table.getRow(3).getCell(1).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
                table.getRow(3).getCell(2).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
 
                // 2,1、3,1 垂直合并
                table.getRow(2).getCell(1).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.RESTART);
                table.getRow(3).getCell(1).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE);
                document.write(new FileOutputStream("/Users/qts/test/666.docx"));
                document.close();
        }
}

原始格式

原始格式

代码生成的格式

代码生成的格式

期望生成的格式

期望生成的格式

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

小可爱~ 发表于 2024-4-16 16:02
Snipaste_2024-04-16_16-01-06.png

没问题吧?不正好是你希望的格式么?
不夏流年 发表于 2024-4-16 16:18
浪费时间,poi分发包辣么多,maven引入的包都不带上
 楼主| qixian 发表于 2024-4-16 16:31
不夏流年 发表于 2024-4-16 16:18
浪费时间,poi分发包辣么多,maven引入的包都不带上

通过easyexcel间接引入的poi-4.1.2依赖
<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>3.0.5</version>
</dependency>
 楼主| qixian 发表于 2024-4-16 16:34
小可爱~ 发表于 2024-4-16 16:02
没问题吧?不正好是你希望的格式么?

我这个是基于poi-4.1.2,你的是哪个版本?
longhun 发表于 2024-4-17 09:28
[Java] 纯文本查看 复制代码
import java.io.FileOutputStream;

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

public class Test {
    public static void main(String[] args) throws Exception {
        XWPFDocument document = new XWPFDocument();
        XWPFTable table = document.createTable(5, 6);
        table.setWidth("100%");
        for (int row = 0; row < 5; row++) {
            for (int column = 0; column < 6; column++) {
                table.getRow(row).getCell(column).setText(row + "-" + column);
            }
        }

        // 合并表格的水平单元格
        for (int column = 1; column <= 3; column++) {
            // 为第二行的单元格设置水平合并,起始单元格
            table.getRow(2).getCell(column).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
            // 为第三行的单元格设置水平合并,继续单元格
            table.getRow(3).getCell(column).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
        }

        // 合并表格的垂直单元格
        // 为第二行的单元格设置垂直合并,起始单元格
        table.getRow(2).getCell(1).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.RESTART);
        // 为第三行的单元格设置垂直合并,继续单元格
        table.getRow(3).getCell(1).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE);
        // 2,1、2,2 水平合并
//        table.getRow(2).getCell(1).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
//        table.getRow(3).getCell(2).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);


        // 3,1、3,2 水平合并
//        table.getRow(3).getCell(1).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
//        table.getRow(3).getCell(2).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
//
//        // 2,1、3,1 垂直合并
//        table.getRow(2).getCell(1).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.RESTART);
//        table.getRow(3).getCell(1).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE);
        document.write(new FileOutputStream("d:/666.docx"));
        document.close();
    }
}
 楼主| qixian 发表于 2024-4-17 13:31
longhun 发表于 2024-4-17 09:28
[mw_shl_code=java,true]import java.io.FileOutputStream;

import org.apache.poi.xwpf.usermodel.XWPF ...

结果不对哦,并未将【2-1,2-2,3-1,3-2】一起合并
图片.png
 楼主| qixian 发表于 2024-4-17 18:18
自己已解决
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-30 13:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表