前言:

因为项目中需要使用到ExcelWriter导出excel的列宽自适应,下面为解决该问题的经过,希望可以对遇到同样问题的开发者有所帮助。
一、通过查询Hutool官方的api文档发现autoSizeColumn()方法
官方api链接

但是,在代码中使用该方法后发现并没有起作用。
二、通过搜索发现其他开发者使用Sheet强制转换为SXSSFSheet,后再调用改方法可以成功设置自适应。

        SXSSFSheet sheet = (SXSSFSheet) writer.getSheet();sheet.trackAllColumnsForAutoSizing();writer.autoSizeColumnAll();

再次尝试使用后报错:
java.lang.ClassCastException: org.apache.poi.hssf.usermodel.HSSFSheet cannot be cast to org.apache.poi.xssf.streaming.SXSSFSheet
三、自定义方法

    /*** 自适应宽度(中文支持)* @param sheet* @param size 因为for循环从0开始,size值为 列数-1*/public static void setSizeColumn(Sheet sheet, int size) {for (int columnNum = 0; columnNum <= size; columnNum++) {int columnWidth = sheet.getColumnWidth(columnNum) / 256;for (int rowNum = 0; rowNum <= sheet.getLastRowNum(); rowNum++) {Row currentRow;//当前行未被使用过if (sheet.getRow(rowNum) == null) {currentRow = sheet.createRow(rowNum);} else {currentRow = sheet.getRow(rowNum);}if (currentRow.getCell(columnNum) != null) {Cell currentCell = currentRow.getCell(columnNum);if (currentCell.getCellType() == XSSFCell.CELL_TYPE_STRING) {int length = currentCell.getStringCellValue().getBytes().length;if (columnWidth < length) {columnWidth = length;}}}}sheet.setColumnWidth(columnNum, columnWidth * 256);}}

问题解决,可以实现列宽自适应。
效果展示:

大神的解决办法:
根据大神的评论,我调用的位置可能不对,要在写出内容后调用才会生效。

Hutool工具类ExcelWriter导出excel列宽自适应问题解决相关推荐

  1. java基于HuTool工具类ExcelWriter合并单元格

    ** java基于HuTool工具类ExcelWriter合并单元格 ** 1.基于HuTool工具类ExcelWriter合并单元格并且使用 jdk1.8 lambda表达式 效果如下: 用姓名和编 ...

  2. 利用POI工具类实现导出Excel的功能

    poi工具类的概述: Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 结构: HSSF - 提供读 ...

  3. java工具类之导出Excel

    在我们的项目中经常会用到导出excel,这里就列举一下大家最常用到的导出EXCEL技术,在说一下自己设计的工具类.对POI不感兴趣的人,可以直接跳到最下面的工具类; 什么是Apache POI? Ap ...

  4. gridControlExport.ExportToXls(fileName) dev gridcontrol导出excel列宽问题

    设置 gridview.OptionsPrint.AutoWidth=False gridview.OptionsView.ColumnAutoWidth=False gcExport.DataSou ...

  5. excel2010设置列宽为像素_使用像素单位设置 EXCEL 列宽或行高

    在导出 Excel 的时候, 经常要需要给列设置宽度或给行设置高度, 在使用 NPOI 或 EppPlus 等组件进行操作的时候, 列宽和行高的单位都不是像素, 好像是英寸,具体是啥也说不清. 平常在 ...

  6. hutool导出excel大数据_HuTool工具类使用之Excel文档的导入导出

    HuTool工具类使用之Excel文档的导入导出 前言 在日常的工作开发中,Excel的导入和导出是必不可少的,如果自己写相应的导入导出方法,会显得十分繁琐,本文采用Hutool工具类实现的Excel ...

  7. hutool 自定义excel_HuTool工具类使用之Excel文档的导入导出

    HuTool工具类使用之Excel文档的导入导出 前言 在日常的工作开发中,Excel的导入和导出是必不可少的,如果自己写相应的导入导出方法,会显得十分繁琐,本文采用Hutool工具类实现的Excel ...

  8. java导出excel设置行高列宽_使用POI生成Excel文件,可以自动调整excel列宽

    //autoSizeColumn()方法自动调整excel列宽 importjava.io.FileOutputStream; importorg.apache.poi.hssf.usermodel. ...

  9. 用hutool工具类导出excel

    工作上有一个导出数据的需求,发现用hutool工具类可以非常简洁快捷的生成excel导出. 前期准备 引入hutool的依赖: <dependency><groupId>cn. ...

最新文章

  1. 在互联网公司说女生备孕,就像跟你女朋友说你不行一个性质!
  2. 原创 | 初学者友好!最全算法学习资源汇总(附链接)
  3. 斯坦福NLP笔记72 —— The Inverted Index
  4. ibm服务器虚拟化报价,IBM x86 服务器虚拟化服务.pdf
  5. MFC和QT等UI框架的特点
  6. mysql内连接查询原理_MySQL全面瓦解12:连接查询的原理和应用
  7. DXP 内电层分割
  8. activemq消息丢失_面试必问之消息中间件
  9. 树莓派进阶之路 (029) - 语音识别模块 LD3320(原创)
  10. windows下搭建ffmpeg环境
  11. c语言 字符串逆序存放,(原创)字符串逆序输出
  12. 小白量化彩票实战(5)彩票号码快速生成组合及利用数据库生成彩票号码组合
  13. 【语音信号处理】3语音信号可视化——prosody
  14. 愿天下有情人都是失散多年的兄妹
  15. Agile PLM 表结构说明
  16. dvanced Installer Architect
  17. mac查看、修改文件权限
  18. SQL SERVER 实用教程(第四版) 实验 1-10 非标准答案
  19. 大脑衰老可逆转,只需注入年轻脑脊液,「返老还童」登Nature
  20. linux系统认证中级是什么,目前国内常见的几种Linux认证及其所需价格

热门文章

  1. SuSE Linux企业版简介
  2. 【JProfiler帮助5】记录数据
  3. SpringBoot - @InitBinder注解详解
  4. 炉石传说 android手机版本区别,《炉石传说》安卓手机版体验:为不改而改(2)
  5. springboot实现固定设备IP
  6. 关于ArrayList两种排序的方法
  7. Java中如何对ArrayList对象排序
  8. hive函数大全、常用函数(超全!!!)
  9. C4D的线条约束(作为子层级)
  10. MSSQL渗透备忘录