带有apache poi的excel上的多组列

mak*_*ier 1 java excel apache-poi

我正在使用 apache poi 4.0.0 版,并且我正在尝试制作多组列,如下图所示:我不知道是否可以使用 poi。

在此处输入图片说明

XSSFSHeet.groupColumn()在循环中尝试了方法。

            int indexColumnMonth = INDEX_START_RESULTS;
            for(int i =0; i< meses.size(); i++) {
                int columnFim = indexColumnMonth + (turmas.size());
                planilha.groupColumn(indexColumnMonth, columnFim);
                indexColumnMonth = columnFim +1;
            }
Run Code Online (Sandbox Code Playgroud)

但这样做的结果是一张只有一组列的工作表,这些列可以获取所有列。我已经检查过职位生成是否正确,但我不正确。

有没有办法用POI做到这一点?

Axe*_*ter 7

[咆哮开始,模式:讽刺] 通常它缺乏对Excel工作原理的理解。许多程序员似乎认为他们可以在Excel不知道的情况下编程功能Excel。他们可能会想:“Excel我为什么要为此烦恼?我是程序员,不是上班族。” 但是对于编程Excel功能Excel,首先必须了解。没有办法。[/咆哮结束]

如果您正在打开的Excel在您的图片显示文件Excel的GUI,做第一个点击-上面J,然后是J该组的一部分?不它不是。它是第二组的一部分吗?不,也不是。那是因为如果单组列之间必须至少有一列,如果它们出现在您的图片中。

因此,如您的图片所示,您已将E:I,K:OQ:U.

来源:

在此处输入图片说明

代码:

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

import java.io.FileInputStream;
import java.io.FileOutputStream;

class ExcelGroupColumns {

    public static void main(String[] args) throws Exception{

        FileInputStream in = new FileInputStream("Test.xlsx");
        Workbook workbook = WorkbookFactory.create(in);

        Sheet sheet = workbook.getSheetAt(0);

        int firstColumn = 4;
        int countGroupedColumns = 5;
        int countGroups = 3;

        for (int i = 0; i < countGroups; i++) {
            sheet.groupColumn(firstColumn, firstColumn + countGroupedColumns - 1);
            firstColumn += countGroupedColumns + 1;
        }

        FileOutputStream out = new FileOutputStream("Test_1.xlsx");
        workbook.write(out);
        out.close();
        workbook.close();

    }
}
Run Code Online (Sandbox Code Playgroud)

结果:

在此处输入图片说明