我正在使用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;
}
但是结果是一张只有一组列的工作表可以获取所有列。我检查了位置是否正确生成,但我不正确。
是否可以通过POI做到这一点?
答案 0 :(得分:2)
[开始授权,方式:讽刺]
通常,它缺乏对Excel
的工作原理的理解。许多程序员似乎认为他们可以在不了解Excel
的情况下编写Excel
功能。他们可能会想:“ Excel
为什么要打扰呢?我是程序员,而不是办公室工作人员。”但是,要编程Excel
功能,首先必须知道Excel
。没有办法。
[/结束]
如果要在Excel
的GUI中打开图片中显示的Excel
文件,并单击J
上方的第一个-,则为J
是小组成员吗?不它不是。这是第二组的一部分吗?不,它也不是。这是因为如果单列组必须像您的图片中所示那样出现,则至少必须有一个列。
因此,如您的图片所示,您将E:I
,K:O
和Q: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 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();
}
}
结果: