这里就简单说了,直接贴代码

@HeadFontStyle(color =2) 维护表头第2行的注解

/**

* @author: kuangql@fadada.com

* @date: 2020/11/27 19:53

* @description: TODO

*/

@Data

public class DemoExportEntity {

public static final String bigTitle= "填写须知: \n" +

"1.第1、2行为固定结构,不可更改;以下示例行,导入前请先删除\n" +

"2.请严格按照填写规则输入数据,不合规的数据无法成功导入 \n" +

"3.测试换行 \n";

/**

*

* org.apache.poi.ss.usermodel.IndexedColors 这个类有所有的颜色枚举值 2是红色

* @ HeadFontStyle 注解默认是宋体,黑色,加粗

*

*/

@ExcelProperty(value = {"姓名(必填)"}, index = 0)

@ColumnWidth(30)

@HeadFontStyle(color =2)

private String userName;

@ExcelProperty(value = {"性别(必填)"}, index = 1)

@ColumnWidth(20)

private String userSexName;

@ExcelProperty(value = {"手机号码(必填)"}, index = 2)

@ColumnWidth(30)

private String userMobile;

@ExcelProperty(value = {"出生年月(必填)"}, index = 3)

@ColumnWidth(30)

private String userBirthday;

@ExcelProperty(value = {"工作单位(必填)"}, index = 4)

@ColumnWidth(20)

private String deptName;

@ExcelProperty(value = {"职务(必填)"}, index = 5)

@ColumnWidth(20)

private String unitPosition;

@ExcelProperty(value = {"干部类别(必填)"}, index = 6)

@ColumnWidth(20)

private String leaderTypeName;

@ExcelProperty(value = {"用户状态(必填)"}, index = 7)

@ColumnWidth(20)

private String userStatusName;

/**

* 每个模板的首行高度, 换行数目+2 乘以400

*/

public static int getHeadHeight(){

return (StringUtils.getCharCounts(bigTitle,"\n")+2)*400;

}

}

维护第一行表头样式

/**

*

*

* 创建模板

* @author: kuangql@fadada.com

* @date: 2020/11/30 13:48

* @description: TODO

*/

public class CreateTemplateWriteHandler implements SheetWriteHandler {

/**

* 第一行内容

*/

private String firstTitle;

/**

* 实体模板类的行高

*/

private int height;

/**

* 实体类 最大的列坐标 从0开始算

*/

private int lastCellIndex;

public CreateTemplateWriteHandler(String firstTitle, int height, int cellCounts) {

this.firstTitle = firstTitle;

this.height = height;

this.lastCellIndex = cellCounts;

}

@Override

public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {

}

@Override

public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {

Workbook workbook = writeWorkbookHolder.getWorkbook();

Sheet sheet = workbook.getSheetAt(0);

Row row1 = sheet.createRow(0);

row1.setHeight((short) height);

//字体样式

Font font = workbook.createFont();

font.setColor((short)2);

Cell cell = row1.createCell(0);

//单元格样式

CellStyle cellStyle = workbook.createCellStyle();

cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);

cellStyle.setAlignment(HorizontalAlignment.CENTER);

cellStyle.setFont(font);

cellStyle.setWrapText(true);

cell.setCellStyle(cellStyle);

//设置单元格内容

cell.setCellValue(firstTitle);

//合并单元格 --> 起始行, 终止行 ,起始列,终止列

sheet.addMergedRegionUnsafe(new CellRangeAddress(0, 0, 0, lastCellIndex));

}

/**

* 根据实体类生成模板

*

* @param response

* @param fileName 下 载的文件名,

* @param sheetName sheet名

* @param model 实体类

* @param height 第一行行高

* @param title 第一行表头内容

* @param lastCellIndex 列数

*/

public static void createTemplate(HttpServletResponse response, String fileName,

String sheetName,

Class> model, int height, String title, int lastCellIndex) {

EasyExcel.write(getOutputStream(fileName, response, ExcelTypeEnum.XLSX), model).

excelType(ExcelTypeEnum.XLSX).sheet(sheetName)

.registerWriteHandler(new CreateTemplateWriteHandler(title, height, lastCellIndex))

.head(model)

.useDefaultStyle(true).relativeHeadRowIndex(1)

.doWrite(null);

}

easyexcel 无模板写入_关于EasyExcel 的一些生成模板,导入导出的使用心得(优化版)...相关推荐

  1. vue 修改模板{{}}标签_详解Vue 动态添加模板的几种方法

    以下方法只适用于 Vue1.0 版本,推荐系数由高到低排列. 通常我们会在组件里的 template 属性定义模板,或者是在*.vue文件里的 template 标签里写模板.但是有时候会需要动态生成 ...

  2. easyexcel 在 设置标题_七. EasyExcel标题加批注和标题字体填充红色

    一, 概述 在日常开发中, 经常会碰到导入导出的场景, 有导入就肯定有导入模板, 本文将介绍利用EasyExcel给标题添加批注和挑剔字体填充颜色 二. 代码 2.1 编写样式处理类: TitleHa ...

  3. easyexcel 无模板写入_给位,问个问题,用easyExcel无模板导出数据时,怎么在指定单元格添加计算公式呢?...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 easyExcel没用过,spire.xls.jar可以给指定单元格添加各种公式 import com.spire.xls.*; public class ...

  4. easyexcel根据模板写入_用 Vue+ElementUI 搭建后台管理极简模板

    本文由图雀社区成员 灿若星空[1] 写作而成,欢迎加入图雀社区,一起创作精彩的免费技术教程,予力编程行业发展. 写在前面 此篇文章为一篇说明文档,不是教你从零构建一个后台管理系统,而是基于一个实际项目 ...

  5. easyexcel根据模板写入_ProxmoxVE 之 创建win10基础镜像模板

    安装完pve之后,需要用到win10操作系统作为桌面虚拟机,这里记录一下制作过程.首先在官网下载win10的镜像,下载地址如下: https://www.wbpluto.com/2018/05/01/ ...

  6. python 标准模板库_比较了3个Python模板库

    python 标准模板库 在我的日常工作中,我花费大量时间将各种来源的数据整理成人类可读的信息. 虽然在很多时候,这只是以电子表格或某种类型的图表或其他数据可视化的形式出现,但在其他情况下,有意义的是 ...

  7. 模板设计模式_设计模式实用又简单的模板模式

    这篇文章纯科普向,如题,对这方面了解的可以绕道了,不耽误大家时间了哈 -----------------------------------人工分割线------------------------- ...

  8. java运费模板设计_电商系统设计之运费模板(下)

    电商大伙每天都在用,类似某猫,某狗等. 电商系统设计看似复杂又很简单,看似简单又很复杂 本章适合初中级工程师细看,大佬请随意 前言 在订单系统中,运费模板是其中一个重要组成部分,看似简单的一个设置,在 ...

  9. java运费模板设计_电商系统设计之运费模板(上)

    电商大伙每天都在用,类似某猫,某狗等. 电商系统设计看似复杂又很简单,看似简单又很复杂 本章适合初中级工程师细看,大佬请随意 前言 在订单系统中,运费模板是其中一个重要组成部分,看似简单的一个设置,在 ...

最新文章

  1. 2017年首份中美数据科学对比报告,Python受欢迎度排名第一,美国数据工作者年薪中位数高达11万美金
  2. Java异常之异常机制
  3. Oracle RAC 环境下的连接管理(转) --- 防止原文连接失效
  4. mysql char null_关于mysql设置varchar 字段的默认值''和null的区别,以及varchar和char的区别...
  5. 怎么样才能写出出色的代码
  6. SAP Spartacus CurrentProductService返回的null对象
  7. php中命名空间、面向对象、访问控制、接口
  8. 及时复盘的好处_还不会复盘?这篇有最全的复盘介绍
  9. idea git提交代码步骤(转载)
  10. Android 签名板
  11. Spring入门学习推荐
  12. 暗黑管理系列:发红包的管理杠杆率和量级作用
  13. aid learning如何换源
  14. BERT如何解决一词多义问题
  15. 在Windows系统中使用DIY Dodecad 2.1 分析祖源的方法
  16. python爬虫爬取起点小说_python3爬虫-使用requests爬取起点小说
  17. 苹果手机计算机怎样拉到桌面,苹果手机怎样才能快速投屏到电脑屏幕上
  18. python实现简单购物商城_python实现简单购物商城
  19. 关于如何向老板提涨工资
  20. DocuWare 文件管理与工作流程自动化案例研究——DocuWare 工作流程功能使在家工作的员工能够保持沟通和高效工作,支持混合环境

热门文章

  1. 如果您不将Docker用于数据科学项目,那么您将生活在1985年
  2. flink 检查点_Flink检查点和恢复
  3. leetcode 1356. 根据数字二进制下 1 的数目排序(排序)
  4. 数据分析和大数据哪个更吃香_处理数据,大数据甚至更大数据的17种策略
  5. #loj 3058 [HNOI2019] 白兔之舞
  6. 20175223 MySQL
  7. 当使用makemigrations时报错No changes detected
  8. 读取不同位置的配置文件
  9. Maven的pom报错的解决方法
  10. python随机生成定长字符串(转)