easyexcel怎么设置表头宽度_easyexcel 自动设置列宽
com.alibaba
easyexcel
2.1.4
导出controller层代码
@RequestMapping("/download")
public void download(HttpServletResponse response) throws IOException {
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
String fileName = URLEncoder.encode("测试", "UTF-8");
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
List depts = new ArrayList<>(3);
for (int i = 0; i < 3; i++) {
Dept dept = new Dept();
dept.setDname("d"+i);
dept.setDeptno(i);
dept.setDbDource("s"+i);
dept.setEmpname("0000000000000000000000000000000000000000000e"+i);
depts.add(dept);
}
EasyExcel.write(response.getOutputStream(), Dept.class)
.head(Dept.class).registerWriteHandler(new CustomCellWriteHandler())
.sheet("模板").doWrite(depts);
}
dept
import com.alibaba.excel.annotation.ExcelProperty;
public class Dept {
@ExcelProperty(value = "部门编号")
private Integer deptno;
@ExcelProperty(value = "部门名称")
private String dname;
@ExcelProperty(value = "部门来源")
private String dbDource;
@ExcelProperty(value = "员工名")
private String empname;
// 省略get/set
writeHandler
package com.example.springbootbasic.config;
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.style.column.AbstractColumnWidthStyleStrategy;
import org.apache.poi.ss.usermodel.Cell;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class CustomCellWriteHandler extends AbstractColumnWidthStyleStrategy {
private static final Logger LOGGER = LoggerFactory.getLogger(CustomCellWriteHandler.class);
private Map> CACHE = new HashMap<>();
@Override
protected void setColumnWidth(WriteSheetHolder writeSheetHolder, List cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
boolean needSetWidth = isHead || !CollectionUtils.isEmpty(cellDataList);
if (needSetWidth) {
Map maxColumnWidthMap = CACHE.get(writeSheetHolder.getSheetNo());
if (maxColumnWidthMap == null) {
maxColumnWidthMap = new HashMap<>();
CACHE.put(writeSheetHolder.getSheetNo(), maxColumnWidthMap);
}
Integer columnWidth = this.dataLength(cellDataList, cell, isHead);
if (columnWidth >= 0) {
if (columnWidth > 255) {
columnWidth = 255;
}
Integer maxColumnWidth = maxColumnWidthMap.get(cell.getColumnIndex());
if (maxColumnWidth == null || columnWidth > maxColumnWidth) {
maxColumnWidthMap.put(cell.getColumnIndex(), columnWidth);
writeSheetHolder.getSheet().setColumnWidth(cell.getColumnIndex(), columnWidth * 256);
}
}
}
}
private Integer dataLength(List cellDataList, Cell cell, Boolean isHead) {
if (isHead) {
return cell.getStringCellValue().getBytes().length;
} else {
CellData cellData = cellDataList.get(0);
CellDataTypeEnum type = cellData.getType();
if (type == null) {
return -1;
} else {
switch (type) {
case STRING:
return cellData.getStringValue().getBytes().length;
case BOOLEAN:
return cellData.getBooleanValue().toString().getBytes().length;
case NUMBER:
return cellData.getNumberValue().toString().getBytes().length;
default:
return -1;
}
}
}
}
}
easyexcel怎么设置表头宽度_easyexcel 自动设置列宽相关推荐
- QTableView如何设置表头宽度
需求回顾 由于要实现国际化,有些字体翻译成英文会非常长,为避免遮挡,所以希望能指定某一列的表头宽一些. 过程 我尝试过以下几种方式,但是没有效果 1.派生类QTableViewModel的Header ...
- easyexcel 检查表头是否匹配_EasyExcel的不确定表头(根据数据生成表头)的excel导出和二级表头以及设置表头的宽度自适应...
1.效果如图 2.Controller @GetMapping("/exportExcel")public void exportExcel(@RequestParam(value ...
- EasyExcel导出、按列设置样式、根据表头字数设置列宽、Converter转换
文章目录 一.Excel导出实体类 二.自定义样式handler 三.servicesImple类中实现方法 四.表头设置列宽handler 五.Converter转换 一.Excel导出实体类 im ...
- EasyExcel代码层面设置写出的Excel样式、以及拦截器策略的使用、自动列宽设置、EasyExcel默认设置详解
一.概述 虽然EasyExcel已经提供了一系列注解方式去设置样式. 但是如果没有实体类,或者想要更精确的去设置导出文件的Excel样式的时候就需要在代码层面去控制样式了. 二.使用已有拦截器自定义样 ...
- easyexcel 在 设置标题_EasyExcel,让excel导入导出更加简单
EasyExcel 在做excel导入导出的时候,发现项目中封装的工具类及其难用,于是去gitHub上找了一些相关的框架,最终选定了EasyExcel.之前早有听闻该框架,但是一直没有去了解,这次借此 ...
- EasyExcel 批量设置单元格样式(字体样式、底纹样式、边框样式、对齐方式、自动换行、旋转文字、竖向文字、数据格式、自动收缩)
目录 1 Maven配置 2 CellStyleModel 3 CustomCellStyleHandler 4 调试代码 5 调试结果 注: 1 Maven配置 <!--hutool工具包-- ...
- easyExcel实现动态表头设置以及单元格样式设置
easyexcel实现文件导入导出请看上篇博客:springboot集成easyExcel实现文件导入导出 上篇文章已经知道如何使用easyExcel实现简单的文件导入导出,但是导出的表头和格式都是固 ...
- css根据当前宽度设置css,JS和CSS实现自动根据分辨率设置页面宽度
为了实现自动根据分辨率设置页面宽度,首先我们要先知道一个JavaScript脚本document.documentElement.clientWidth获取页面宽度. 为了说明在IE和FireFox等 ...
- 设置vim的默认工作路径同时与自动设当前编辑的文件所在目录为当前工作路径不冲突...
问题: 想让vim自动设当前编辑的文件所在目录为当前工作路径不冲突,但是当vim新建文件的时候,工作路径会又自动切换缓存path下. 如何使当使用vim打开文件时,vim的工作路径是当前文件所在的路径 ...
最新文章
- 网页鼠标滚动实现图片缩放
- GVRP和VTP比较
- 单核工作法16:循序渐进(下)
- Linux下的文件系统与目录系统简介
- js 如何去除字符两端的引号
- 用计算机表示45,计算机应用基础信息专业技术习题(45页)-原创力文档
- fft谱分析的误差有哪些原因造成的?如何减小分析误差。_频谱分析仪25问
- JAVA8给我带了什么——并流行和接口新功能
- 检测浏览器的关闭事件
- 傲腾机器Linux,【收藏】傲腾装机必看!
- python 压力测试
- 负载均衡(Load Balance)
- linux rescue 硬盘,linux rescue
- JS的日期操作:String转date日期格式、求日期差
- Android音频可视化
- 适配USB接口奕力 ILITEK Multi-Touch-V5000
- 2020科协竞赛部第一次培训
- python 从大图中找小图
- (二十六)Fama-French三因素模型及应用
- 2022-2028全球与中国高级计划和排程软件市场现状及未来发展趋势