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