关于autoSizeColumn()方法失效的小建议

java开发中遇到了这么个问题使用poi操作autoSizeColumn()方法时怎么都不管用,看了半天查了半天毫无头绪,最后看看了看源码!明白了,原来这个方法在执行的时候是先取出coll里面的值进行对比取最大的作为宽度,那么你首先得有值,看看了自己的方法,原来是把autoSizeColumn()方法写在了赋值的前面所以肯定没效果,把写入sheet内值得代码放在前面就OK了,不过内部的判断貌似只判断数字的bytes,不是中文的所以相对宽度会变小很多,这个还请知道的大神指点了!
/** * 组装流程审批记录的标头 */ private void createMergedHeaderCell(XSSFSheet sheet, int rowNum, int firstCol, int lastCol, String value, int rowHeight, int fontSize) { // 创建行对象 XSSFRow row = sheet.getRow(rowNum) != null ? sheet.getRow(rowNum) : sheet.createRow(rowNum); // 1. 合并单元格 CellRangeAddress region = new CellRangeAddress( rowNum, rowNum, firstCol, lastCol); sheet.addMergedRegion(region); // 2. 创建单元格并设置值 XSSFCell cell = row.createCell(firstCol); cell.setCellValue(value); // 3. 只需创建和设置主单元格(A1) XSSFCell mainCell = row.createCell(0); mainCell.setCellValue(value); // 4. 创建带边框的样式 XSSFCellStyle style = sheet.getWorkbook().createCellStyle(); style.setAlignment(HorizontalAlignment.CENTER); style.setVerticalAlignment(VerticalAlignment.CENTER); // 设置字体 XSSFFont font = sheet.getWorkbook().createFont(); font.setFontName("宋体"); font.setFontHeightInPoints((short)fontSize); font.setBold(true); style.setFont(font); // 关键设置:只需为主单元格设置边框(合并区域自动继承) style.setBorderTop(BorderStyle.THIN); style.setTopBorderColor(IndexedColors.BLACK.getIndex()); style.setBorderBottom(BorderStyle.THIN); style.setBottomBorderColor(IndexedColors.BLACK.getIndex()); style.setBorderLeft(BorderStyle.THIN); style.setLeftBorderColor(IndexedColors.BLACK.getIndex()); style.setBorderRight(BorderStyle.THIN); style.setRightBorderColor(IndexedColors.BLACK.getIndex()); // 5. 仅需应用样式到主单元格 mainCell.setCellStyle(style); // 6. 设置行高和列宽 row.setHeight((short)(rowHeight * 20)); sheet.autoSizeColumn(0); } 你给我认真改
最新发布
12-26
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值