java poi合并单元格问题

使用poi导出的execl合并单元格,会出现下图问题

图片描述

整个单元格看似合并了,但是文字没有垂直居中,而且execl中所有的合并都会在第三行开始出现灰色分层样式

合并单元格伪代码

String upCompareField = ""; //上一行的对比值

for(int i = 0; i < size; i++){

HSSFRow row = sheet.createRow(i); //sheet为类中全局变量

for(int j = 0; j < length; j++){

HSSFCell cell1 = row.createCell(j);

String compareValue = ...; //每行中的对比值

cell1.setCellValue(setValue);

if(upCompareField.equals(compareValue)){

sheet.addMergedRegion(new CellRangeAddress(i-1,i,j,j));

}else {

upCompareField = compareValue;

}

}

}

我这里这在因为用了反射获取对象中的值,并与前端传过来的表头做对比,所以使用了双循环,而合并单元格是在双循环中,并且合并需要上一行的值与下一行值相同就合并。

问题:导出的execl中合并的单元格为什么会出现分层问题?还有我这样一层层合并单元格会有问题吗?

回答:

从你的截图上看可能是最上面两行进行了单元格合并,然后第三行和上一行的值不同,但是又和第四行和第五行的值相等,进行了一次单元格合并。要不单步调试看看看看第三行合并的时候出了什么问题吧

回答:

合并单元格放在双循环外面解决了,双循环中用了Map<String,Map<String,Integer>>保存需要合并的单元格的信息。但是总感觉这样不是最优解。。。。

哪位老铁有poi的导入导出execl代码实现没有

以上是 java poi合并单元格问题 的全部内容, 来源链接: utcz.com/p/179335.html

回到顶部