首页 > 其他分享 >EasyExcel 非注解方式设置列宽行高的几种实现方式

EasyExcel 非注解方式设置列宽行高的几种实现方式

时间:2024-11-19 15:12:30浏览次数:1  
标签:outputStream sheet String 列宽行 List EasyExcel setColumnWidth 注解 response

 public static <T> void exportDownBoxExcel(String fileName, String sheetName,Class<T> t, String titleName, List<List<String>> headers, HttpServletResponse response, Map<Integer, List<String>> selectMap,List<T> dataList, boolean isExportNullField) {
ServletOutputStream outputStream = null;
try {
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
String fileNameEncode = URLEncoder.encode(fileName, "UTF-8");
response.setHeader("Content-disposition", "attachment;filename=" + fileNameEncode + ExcelTypeEnum.XLSX.getValue());
outputStream = response.getOutputStream();
EasyExcelFactory.write(outputStream, t)
.registerWriteHandler(new SelectSheetWriteHandler(selectMap))
//设置表头样式
.registerWriteHandler(getHorizontalCellStyleStrategy())
// 重写AbstractColumnWidthStyleStrategy策略的setColumnWidth方法
.registerWriteHandler(new AbstractColumnWidthStyleStrategy() {
@Override
protected void setColumnWidth(WriteSheetHolder writeSheetHolder, List<CellData> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
Sheet sheet = writeSheetHolder.getSheet();
int columnIndex = cell.getColumnIndex();
// 列宽16
sheet.setColumnWidth(columnIndex, (short) 16);
}
})
.excelType(ExcelTypeEnum.XLSX)
// .head(headers)
.sheet(sheetName)
.doWrite(dataList);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (outputStream != null) {
outputStream.flush();
outputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}

}

标签:outputStream,sheet,String,列宽行,List,EasyExcel,setColumnWidth,注解,response
From: https://www.cnblogs.com/zxy-come-on/p/18554903

相关文章

  • SpringBoot(二十六)SpringBoot自定义注解
    注解在springboot日常开发中使用的频率是很高的,官方为我们提供了很多注解,比如:@Autowired、@GetMapping等……但是我们有些特定的需求官方提供的注解是没有的。我们可以自定义注解。下面我们来了解一下自定义注解的过程。一:元注解Java为我们提供了几个元注解来自定义注解......
  • @Transactional事务注解与函数内多线程并发编程出现的问题
    @Transactional当@Transactional注解写在函数上之后,就表示这个函数开启了事务。事务是基于数据库连接的connect。parallelStream这是针对List进行多线程Stream的操作。//对list集合开启多线程操作list.parallelStream().forEach(item->{//业务代码})@Transactional和pa......
  • Spring IoC注解式开发
    Java注解的前世今生在Java开发中,你应该会经常看到一些怪怪的符号和字串,比如在代码上面有@Override或者@Deprecated。这些就是我们谓之为“注解”的东西。今天我会带你了解一下Java注解的知识,以及为什么它们这么有用!什么是Java注解?注解实际上是一种特殊的标记,它可以被......
  • Spring注解@Transactional事务使用问题
    同步数据需要分批操作,每次同步1000条,都需要提交事务@ServicepublicclassMyService{@AutowiredprivateMyServiceself;//注意使用自身代理对象来触发事务//循环调用此方法@Transactional(propagation=Propagation.REQUIRES_NEW)publicvoid......
  • 深入理解Jackson的@JsonCreator注解
    在Java的JSON处理库中,Jackson无疑是最流行的选择之一。它提供了强大的数据绑定功能,允许开发者轻松地在Java对象和JSON数据之间进行转换。在处理不可变对象或者需要自定义反序列化逻辑时,@JsonCreator注解显得尤为重要。本文将通过实例深入探讨@JsonCreator注解的使用,包括其在......
  • 7.Java 注解和元注解(三种注解、四种元注解)
    一、注解概述注解也被称为元数据,用于修饰包、类、方法等数据信息和注释一样,注解不影响程序逻辑,但注解可以被编译或运行,相当于嵌入在代码中的补充信息在JavaSE中,注解使用的目的比较简单,例如标记过时的功能,忽略警告等JavaEE中注解会充当更加重要的角色二、三种注......
  • JPA 注解只能用于标记实体类及其与数据库表之间的关系吗?对数据库表并没有什么实际影响
    JPA注解的主要作用确实是用于标记实体类及其与数据库表之间的关系,但它们在数据库层面上也会产生实际影响。具体来说,JPA注解不仅用于对象-关系映射(ORM),而且会影响数据库的结构和行为。以下是一些关键点,说明JPA注解如何对数据库表产生实际影响:1.生成数据库结构使用JPA时,可以......
  • 自定义注解进行数据脱敏
    前言有些时候,我们可能对输出的某些字段要做特殊的处理在输出到前端,比如:身份证号,电话等信息,在前端展示的时候我们需要进行脱敏处理,这时候通过自定义注解就非常的有用了。在Jackson中要自定义注解,我们可以通过@JacksonAnnotationsInside注解来实现,如下示例:一、自定义注解import......
  • @Around() 和 @Pointcut()注解的区别
    1. @Around 注解@Around是一种环绕通知(AroundAdvice),它允许你在目标方法执行前后都执行一些逻辑。这意味着你可以在方法调用之前、之后甚至在方法抛出异常时执行特定的逻辑。示例@Around("@annotation(myLock)")publicObjectaroundAdvice(ProceedingJoinPointjoinPoi......
  • 深入理解Spring框架中的@Async注解实现异步任务
    目录1.引言2.环境准备3.启用异步支持4.创建异步任务5.调用异步任务6.运行应用7.使用@Async需要注意的地方8.结论在现代Web应用中,异步任务的执行变得越来越重要。Spring框架提供了强大的@Async注解,可以帮助开发者轻松实现异步任务。本文将详细介绍如何在Sprin......