使用Apache POI在Excel上创建多组列

时间:2018-11-02 19:10:27

标签: java excel apache-poi

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

enter image description here

我尝试在循环内使用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;
            }

但是结果是一张只有一组列的工作表可以获取所有列。我检查了位置是否正确生成,但我不正确。

是否可以通过POI做到这一点?

1 个答案:

答案 0 :(得分:2)

[开始授权,方式:讽刺] 通常,它缺乏对Excel的工作原理的理解。许多程序员似乎认为他们可以在不了解Excel的情况下编写Excel功能。他们可能会想:“ Excel为什么要打扰呢?我是程序员,而不是办公室工作人员。”但是,要编程Excel功能,首先必须知道Excel。没有办法。 [/结束]

如果要在Excel的GUI中打开图片中显示的Excel文件,并单击J上方的第一个-,则为J是小组成员吗?不它不是。这是第二组的一部分吗?不,它也不是。这是因为如果单列组必须像您的图片中所示那样出现,则至少必须有一个列。

因此,如您的图片所示,您将E:IK:OQ:U分组了。

来源:

enter image description here

代码:

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 countGoupedColumns = 5;
  int countGroups = 3;

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

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

 }
}

结果:

enter image description here