sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 2))
自适应列宽度:
sheet.autoSizeColumn(1)
sheet.autoSizeColumn(1, true)
这两种方式都是自适应列宽度,但是注意这个方法在后边的版本才提供,poi的版本不要太老。 注意:第一个方法在合并单元格的的单元格并不好使,必须用第二个方法。
sheet.setColumnWidth(m, “列名”.getBytes().length*2*256)
这个方法是计算字符串的长度,以便设置列宽,该方法在解决中文的问题上比较好,前面两种方法对中文不好好用。。。。
还有在自适应宽度的时候,有时候遇到单元格是公式单元格,自适应不起作用,那是因为单元格存的是公式,并不是真正的数据,解决方法:
HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(sheet.getWorkbook())
CellValue cell71Val = evaluator.evaluate(cell71)
cell71.setCellValue(cell71Val.getNumberValue())
将格式化后的数据再次set进去,就是真正的值了。
如何用poi导出excel设置列宽?1.第一个参数表示要为第几列设置,
2.第二个参数表示列的宽度,看看上面的代码按说第一行第一列的单元格形状应该是个正方形,因为宽和高都是250,
3.但是打开导出后的Excel发现宽度没有高度大,是个长方形,查看该列的宽度仅为7个像素,看来行高和列宽的单位是不一样的,同样换一算sheet.setColumnWidth((short)
0,
(short)
(35.7))表示高度为一个像素,同样设置列宽的像素为sheet.setColumnWidth((short)
0,
(short)
(35.7*n))//n为列高的像素数。
public void setColumnWidth(int columnIndex,int width)
Set the width (in units of 1/256th of a character width)
它的api文档里写的很清楚了,以一个字符的1/256的宽度作为一个单位
3000的话就是11.7左右,舍去小数点就是11个字符的宽度了。
转像素的话先要看字符的类型,不同的类型一个字符占用的像素是不同的。。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)