前言

用EaxyExcel默认的宽度,有时不够宽,数据会自动换行。为了追求美观,想手动设置列宽。

效果

设置前

设置后

代码实现

导入依赖

本人习惯用springboot自带的单元测试,一个注解就够,不用到处写main方法

<!-- springboot test启动器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel --><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.7</version></dependency><!-- https://mvnrepository.com/artifact/com.google.guava/guava --><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.1-jre</version></dependency>

列宽设置有两种方式,一种是设置HorizontalCellStyleStrategy,为表头和内容设置宽度,字体,边框等其他内容,另一种是继承AbstractColumnWidthStyleStrategy,在setColumnWidth方法里简单设置,这里介绍后一种,第一种在我的其它excel文章有。

继承并实现setColumnWidth方法

import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.Head;
import com.alibaba.excel.util.CollectionUtils;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.alibaba.excel.write.style.column.AbstractColumnWidthStyleStrategy;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Sheet;import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** 自动设置列宽** @date 01/22/2021 14:53*/
public class ExcelWidthStyleStrategy extends AbstractColumnWidthStyleStrategy {// 统计setColumnWidth被调用多少次private static int count = 0;@Overrideprotected void setColumnWidth(WriteSheetHolder writeSheetHolder, List<CellData> cellDataList, Cell cell, Head head,Integer relativeRowIndex, Boolean isHead) {// 简单设置Sheet sheet = writeSheetHolder.getSheet();sheet.setColumnWidth(cell.getColumnIndex(), 5000);System.out.println(count++);}
}

测试

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.google.common.collect.Lists;
import org.junit.Test;import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;/*** Java 通过EasyExcel导出的Excel文档的字体,背景色,自动列宽等符合要求* https://blog.csdn.net/weixin_44811578/article/details/107101248** @date 01/24/2021 23:04*/
public class Demo6 {@Testpublic void test() throws IOException {// 文件输出位置OutputStream out = new FileOutputStream("/Users/quanlinglong/Downloads/mergeDemo/demo" + System.currentTimeMillis() + ".xlsx");EasyExcel.write(out).needHead(true).head(head()) //表头.excelType(ExcelTypeEnum.XLSX).registerWriteHandler(new ExcelWidthStyleStrategy()) // 设置宽度.sheet(0, "城市介绍").doWrite(contentData()); // 内容}private List<List<String>> head() {List<List<String>> headTitles = Lists.newArrayList();headTitles.add(Lists.newArrayList("城市"));headTitles.add(Lists.newArrayList("人口数目"));headTitles.add(Lists.newArrayList("出行方式"));headTitles.add(Lists.newArrayList("著名景点"));return headTitles;}private List<List<String>> contentData() {List<List<String>> data = Lists.newArrayList();data.add(Lists.newArrayList("深圳", "200", "地铁", "深圳湾"));data.add(Lists.newArrayList("广州", "100", "地铁", "珠江"));data.add(Lists.newArrayList("北京", "300", "地铁", "故宫"));data.add(Lists.newArrayList("杭州", "400", "地铁", "西湖"));return data;}
}

导出的excel有20个单元格内容,setColumnWidth方法被调用20次,说明每个单元格都调用一次。后续可以利用这一点设置单元格样式。

希望对你有帮助

完。

相关链接:
Java 通过EasyExcel导出的Excel文档的字体,背景色,自动列宽等符合要求

EasyExcel自动设置列宽相关推荐

  1. EasyExcel手动设置列宽3.x.x版本

    说明 EasyExcel是3.x.x 版本的 参数1就是Excel列的索引,从0开始 sheet.setColumnWidth(1, 5000); setColumnWidth(i,j)函数中,i是列 ...

  2. easyexcel怎么设置表头宽度_easyexcel 自动设置列宽

    com.alibaba easyexcel 2.1.4 导出controller层代码 @RequestMapping("/download") public void downl ...

  3. EasyExcel导出、按列设置样式、根据表头字数设置列宽、Converter转换

    文章目录 一.Excel导出实体类 二.自定义样式handler 三.servicesImple类中实现方法 四.表头设置列宽handler 五.Converter转换 一.Excel导出实体类 im ...

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

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

  5. java jtable设置列宽_【Java】JTable组件的构造函数和设置列宽

    使用JTable组件 类层次结构图: java.lang.Object --java.awt.Component --java.awt.Container --javax.swing.JCompone ...

  6. excel2010设置列宽为像素_怎么改变Excel中列宽的像素

    展开全部 1.打开EXCEL工作bai簿,在[du开始]选项卡-[单zhi元格]功能组中[格式]下拉dao列表中可以设置[行回高].列宽同样在这答里可以找到设置. 2.在行号上点鼠标右键,在弹出的快捷 ...

  7. 设置vim的默认工作路径同时与自动设当前编辑的文件所在目录为当前工作路径不冲突...

    问题: 想让vim自动设当前编辑的文件所在目录为当前工作路径不冲突,但是当vim新建文件的时候,工作路径会又自动切换缓存path下. 如何使当使用vim打开文件时,vim的工作路径是当前文件所在的路径 ...

  8. 将FORMSTYLE类型由FSNORMAL变为FSMDICHILD时,窗体的VISIBLE自动设为TRUE.且create之后,自动运行onshow事件。

    将FORMSTYLE类型由FSNORMAL变为FSMDICHILD时,窗体的VISIBLE自动设为TRUE.且create之后,自动运行onshow事件.

  9. python tableview 列宽_QTableView设置列宽

    环境: python 2.7.6, pyqt 4.8.6 想要的效果 默认是均匀分布的列宽. 代码顺序: 1.定义QTableview实例tableview 2.定义QAbstractTableMod ...

  10. (二)xlwt模块详解--设置列宽、行高

    第二篇博客是关于设置Excel中的列宽和行高. 废话不多说,直接上代码看效果! 1.设置列宽 xlwt中列宽的值表示方法:默认字体0的1/256为衡量单位.其创建时使用的默认宽度为2960,即11个字 ...

最新文章

  1. 欧拉角与四元数互转,及四元数slerp球面线性插值算法
  2. 【跟着我们学Golang】之面向对象
  3. 开始使用博客了,改变从这里开始。
  4. Android Design Library之三: NavigationView
  5. 灵魂拷问!一起刷完了这份1307页的安卓面试宝典吧,不吃透都对不起自己
  6. python 默认参数_避坑指南!Python里面的这九个坑,坑的就是你!
  7. liunx系统优化之 TCP sysctl
  8. 微信公众号api关注接口php,微信公众平台接口开发入门示例
  9. 嘿,来打游戏!中国电竞人才缺口达50万
  10. Linux(Ubuntu/CentOS)安装splunkforwarder步骤
  11. js总结1:数据类型
  12. hp usb disk storage format tool
  13. sas不能安装独立的java_SAS安装问题解决办法
  14. 什么是IP防护等级,又该如何区分
  15. 【通过】华为OD机试真题59:叠积木
  16. centos7 搭建turn stun 服务器
  17. 农村将迎来重大爆发!传统农业链条正在重塑,关键一步已经迈出
  18. 利器解读——Linux 内核调测中最最让开发者头疼的 bug 有解了|龙蜥技术
  19. java early eof_idea克隆项目,git clone出现early EOF问题的解决方案
  20. 助力服装智造!这家企业携手美创实现全流程数据安全保障

热门文章

  1. 台式计算机无线网络,台式电脑如何使用无线上网?
  2. SQL Server版本和下载地址
  3. 越狱相关三:OpenSSH
  4. 蓝牙中的三种音频编码:Apt-X、SBC、AAC,请问分别有什么区别?
  5. 2020 HDU多校联合训练
  6. java base64解码乱码_java base64解码 怎么是乱码呢
  7. 女生29岁 ,想学前端,还来得及么?
  8. 解决word各级标题序号后面有长空格
  9. 腾讯ISUX网页前端代码分析
  10. vue 使用 createjs 绘制扇形