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

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

@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);

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399266.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu14.04下搭建Bochs仿真平台,同时用该平台安装Linux0.11内核

因为Linux0.11内核需要在80X86硬件平台上运行,现在已经没有该硬件系统了,所以需要搭建Bochs这个仿真平台。Bochs是一个X86硬件平台的开源模拟器。 安装步骤参考的是如下一篇文章:http://os.51cto.com/art/201407/446838_all.htm,非…

Centos6.4 本地yum源配置

由于单位的服务器均使用的是内网,而安装一些软件如Git,需要很多的依赖包,使用yum安装相对简单,由于不能联网故配置本地yum源配置。 1.首先将需要rpm库添加到系统中: 1).虚拟机中安装的linux操作系统:则只需将安装包ISO…

java开发工程师p2级别_java开发工程师p2级别_Java程序员等级怎么划分?

技术不同。简单的可以理解为:初级中级的只关注代码,编程。高级的就要考虑系统的架构,整体框架。一、初级部分1、Java 程序设计基础,包括 J2sdk基础、Java面向对象基础、Java API使用、数据结构及算法基础、Java AWT图形界面程序开…

List集合操作

Java中对List集合的常用操作目录: list中添加,获取,删除元素;list中是否包含某个元素;list中根据索引将元素数值改变(替换);list中查看(判断)元素的索引;根据元素索引位置…

【xml】利用OpenCV解析

看到一篇讲的很清楚的博客:http://blog.csdn.net/jarvischu/article/details/8481510 转载于:https://www.cnblogs.com/dplearning/p/3830296.html

java web与android互通的aes算法

2019独角兽企业重金招聘Python工程师标准>>> ####Java实现代码 //可自定义保证16btye即可private static final byte[] IV {16, 26, -35, 23, 34, 125, -5, -4, -8, -9, -15, -78, 90, -8, -99, 100};public static byte[] encrypt(String content, String passwor…

mysql第三方工具binlog_mysql 开发进阶篇系列 33 工具篇(mysqlbinlog日志管理工具)

一.概述由于服务器生成的二进制日志文件以二进制格式保存,所以如果要想检查这些文件的文本格式,就会用到mysqlbinlog日志管理工具。mysqlbinlog的语法如下:mysqlbinlog [options] log-files log-files2...其中options有很多选项,常用如下&…

JMeter部分功能详解

JMeter 介绍: 一个非常优秀的开源免费的性能测试工具。 优点:你用着用着就会发现它的重多优点,当然不足点也会呈现出来。 从性能工具的原理划分: Jmeter工具和其他性能工具在原理上完全一致,工具包含4个部分&#xff1…

[原]Threads vs Processes in Linux 分析

Linux中thread (light-weighted process) 跟process在實作上幾乎一樣。 最大的差異來自於,thread 會分享 virtual memory address space. a. 從kernel角度看兩者沒差別,在user看來process是least shared而thread是most sharing. b. 從實作角度來比較: 創…

登录时记住用户名和密码及cookie案例应用

文章原址:http://www.jb51.net/article/33588.htm 登录样子,可以参考某一论坛的登录介面: 记住这些信息,可以使用Cookie来实现,更多Cookie应用,可参考 http://jb51.net/article/33590.htm http://jb51.net…

退出登录后点返回键 是登录状态_看了这50条登录的测试点,你还敢说测试很容易吗...

条件:一个用户名输入框 (要求15个字符以内)一个密码输入框 (要求8个字符以内)一个登录按钮针对以上条件进行测试用例的设计先回顾一下测试用例的设计方法:等价类,边界值,错误猜测法,因果图,场景法测试功能点…

HTML5原生拖拽/拖放(drag drop)详解

前言 拖放(drap && drop)在我们平时的工作中,经常遇到。它表示:抓取对象以后拖放到另一个位置。目前,它是HTML5标准的一部分。我从几个方面学习并实践这个功能。 拖放的流程对应的事件 我们先看下拖放的流程&a…

Linux 下 新增Oracle10g 实例

主要分为5步:创建实例目录,创建密码文件,创建参数文件,创建建库脚本并建库,创建数据字典。 其中,需要特别注意2点: 目录的权限,即用户和所属用户组都要是oracle。可以切换到已存在的…

Linux vmstat命令详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是…

python中如何比较两个列表_python中如何比较两个列表

cmp() 方法用于比较两个列表的元素。cmp()方法语法:cmp(list1, list2)参数:list1 -- 比较的列表。list2 -- 比较的列表。返回值:如果比较的元素是同类型的,则比较其值,返回结果。如果两个元素不是同一种类型,则检查它们是否是数字。如果是数字…

窗体设置

锁定窗体大小:FormborderStyleFixedDialog 去掉最大化:maxminzeboxfalse 去掉最小化:minminzeboxfalse转载于:https://www.cnblogs.com/swtool/p/3840171.html

rc mysql common_RR与RC隔离级别下MySQL不同的加锁解锁方式

作者 韩杰沃趣科技MySQL数据库工程师出品 沃趣科技| RC与RR隔离级别下MySQL不同的加锁解锁方式MySQL5.7.21数据准备rootlocalhost : pxs 05:26:27> show create table dots\G*************************** 1. row ***************************Table: dotsCreate Table: …

浅谈web应用的负载均衡、集群、高可用(HA)解决方案

浅谈web应用的负载均衡、集群、高可用(HA)解决方案转载于:https://www.cnblogs.com/hfultrastrong/p/7887420.html

今天开通了博客园帐号

打算开博客很久了,最近一直在纠结于应该在哪里开博客,也选了一些博客网站做了粗略的对比,同时还看了网友们的比较,将要在博客园和CSND之间选择,最后选择了博客园。原因在于博客园更专注,希望在这里能够和大…