为啥我的poi autoSizeColumn()不起作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥我的poi autoSizeColumn()不起作用相关的知识,希望对你有一定的参考价值。

为什么我的poi autoSizeColumn()不起作用 似乎我的这个列宽只自动适应第一行的宽度 请问这是怎么回事?谢谢!!!

参考技术A 你的poi是什么版本的呀?我用的是最新的版本,当合并单元格之后使用autoSizeColumn方法就不管用了。不过我看api上写的是,如果你想使合并单元格后的列宽度自适应的话需要用这个autoSizeColumn(8,true);本回答被提问者采纳

POI 实现合并单元格以及列自适应宽度

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进去,就是真正的值了。

转自:http://yjck.iteye.com/blog/1609232

以上是关于为啥我的poi autoSizeColumn()不起作用的主要内容,如果未能解决你的问题,请参考以下文章

POI AutoSizeColumn() 性能瓶颈

java/poi 调整Excel 列宽支持自适应中文字符宽度

java/poi 调整Excel 列宽支持自适应中文字符宽度

POI 实现合并单元格以及列自适应宽度

使用easypoi时,动态设置excel列宽

layui 的数据表格 列宽度自适应应该怎么设置