EasyExcel自动设置列宽
前言
用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自动设置列宽相关推荐
- EasyExcel手动设置列宽3.x.x版本
说明 EasyExcel是3.x.x 版本的 参数1就是Excel列的索引,从0开始 sheet.setColumnWidth(1, 5000); setColumnWidth(i,j)函数中,i是列 ...
- easyexcel怎么设置表头宽度_easyexcel 自动设置列宽
com.alibaba easyexcel 2.1.4 导出controller层代码 @RequestMapping("/download") public void downl ...
- EasyExcel导出、按列设置样式、根据表头字数设置列宽、Converter转换
文章目录 一.Excel导出实体类 二.自定义样式handler 三.servicesImple类中实现方法 四.表头设置列宽handler 五.Converter转换 一.Excel导出实体类 im ...
- excel2010设置列宽为像素_使用像素单位设置 EXCEL 列宽或行高
在导出 Excel 的时候, 经常要需要给列设置宽度或给行设置高度, 在使用 NPOI 或 EppPlus 等组件进行操作的时候, 列宽和行高的单位都不是像素, 好像是英寸,具体是啥也说不清. 平常在 ...
- java jtable设置列宽_【Java】JTable组件的构造函数和设置列宽
使用JTable组件 类层次结构图: java.lang.Object --java.awt.Component --java.awt.Container --javax.swing.JCompone ...
- excel2010设置列宽为像素_怎么改变Excel中列宽的像素
展开全部 1.打开EXCEL工作bai簿,在[du开始]选项卡-[单zhi元格]功能组中[格式]下拉dao列表中可以设置[行回高].列宽同样在这答里可以找到设置. 2.在行号上点鼠标右键,在弹出的快捷 ...
- 设置vim的默认工作路径同时与自动设当前编辑的文件所在目录为当前工作路径不冲突...
问题: 想让vim自动设当前编辑的文件所在目录为当前工作路径不冲突,但是当vim新建文件的时候,工作路径会又自动切换缓存path下. 如何使当使用vim打开文件时,vim的工作路径是当前文件所在的路径 ...
- 将FORMSTYLE类型由FSNORMAL变为FSMDICHILD时,窗体的VISIBLE自动设为TRUE.且create之后,自动运行onshow事件。
将FORMSTYLE类型由FSNORMAL变为FSMDICHILD时,窗体的VISIBLE自动设为TRUE.且create之后,自动运行onshow事件.
- python tableview 列宽_QTableView设置列宽
环境: python 2.7.6, pyqt 4.8.6 想要的效果 默认是均匀分布的列宽. 代码顺序: 1.定义QTableview实例tableview 2.定义QAbstractTableMod ...
- (二)xlwt模块详解--设置列宽、行高
第二篇博客是关于设置Excel中的列宽和行高. 废话不多说,直接上代码看效果! 1.设置列宽 xlwt中列宽的值表示方法:默认字体0的1/256为衡量单位.其创建时使用的默认宽度为2960,即11个字 ...
最新文章
- 欧拉角与四元数互转,及四元数slerp球面线性插值算法
- 【跟着我们学Golang】之面向对象
- 开始使用博客了,改变从这里开始。
- Android Design Library之三: NavigationView
- 灵魂拷问!一起刷完了这份1307页的安卓面试宝典吧,不吃透都对不起自己
- python 默认参数_避坑指南!Python里面的这九个坑,坑的就是你!
- liunx系统优化之 TCP sysctl
- 微信公众号api关注接口php,微信公众平台接口开发入门示例
- 嘿,来打游戏!中国电竞人才缺口达50万
- Linux(Ubuntu/CentOS)安装splunkforwarder步骤
- js总结1:数据类型
- hp usb disk storage format tool
- sas不能安装独立的java_SAS安装问题解决办法
- 什么是IP防护等级,又该如何区分
- 【通过】华为OD机试真题59:叠积木
- centos7 搭建turn stun 服务器
- 农村将迎来重大爆发!传统农业链条正在重塑,关键一步已经迈出
- 利器解读——Linux 内核调测中最最让开发者头疼的 bug 有解了|龙蜥技术
- java early eof_idea克隆项目,git clone出现early EOF问题的解决方案
- 助力服装智造!这家企业携手美创实现全流程数据安全保障