poi 怎么设置表格宽度自适应

poi 怎么设置表格宽度自适应,第1张

POI是apache提供的一个读写Excel文档的开源组件,在 *** 作excel时常要合并单元格,合并单元格的方法是:

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个字符的宽度了。

转像素的话先要看字符的类型,不同的类型一个字符占用的像素是不同的。。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11329721.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存