easyPoi 注解导出 动态隐藏列
easyPoi 注解导出 动态隐藏列
1.先写个poi工具类
/*** 动态显示Excel导出列* @param <T>*/
public class EasyPoiUtil<T> {/*** 需要被反射的对象,使用泛型规范传入对象*/public T t;/*** 动态更改EasyPoi中控制列显示的值 * * @param columnName 需要转换的列属性名称 * @param target 默认true * @throws NoSuchFieldException * @throws IllegalAccessException*/public void hihdColumn(String columnName, Boolean target) throws Exception {if (t == null) {throw new ClassNotFoundException("TARGET OBJECT NOT FOUNT");}if (StringUtils.isEmpty(columnName)) {throw new NullPointerException("COLUMN NAME NOT NULL");}if (target == null) {target = true;}//获取目标对象的属性值Field field = t.getClass().getDeclaredField(columnName);//获取注解反射对象Excel excelAnnon = field.getAnnotation(Excel.class);//获取代理InvocationHandler invocationHandler = Proxy.getInvocationHandler(excelAnnon);Field excelField = invocationHandler.getClass().getDeclaredField("memberValues");excelField.setAccessible(true);Map memberValues = (Map) excelField.get(invocationHandler);memberValues.put("isColumnHidden", target);}
}
2.controller 中设置
@GetMapping("/export")public BaseResult export(SysPost post) {List<SysPost> list = postService.selectPostList(post);/*** 动态隐藏 列*/for (SysPost item : list){EasyPoiUtil<SysPost> easyPoiUtil = new EasyPoiUtil<>();easyPoiUtil.t = item;try {//隐藏bean 字段为postId的列easyPoiUtil.hihdColumn("postId", true);} catch (Exception e) {log.info("列隐藏转换失败:{}", e.getMessage());e.printStackTrace();}}Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("岗位管理表", "岗位管理", ExcelType.XSSF),SysPost.class, list);return ExcelUtil.exportExcel(workbook, "岗位数据");}
3.bean代码如下
@Data
public class SysPost extends BaseEntity
{private static final long serialVersionUID = 1L;/** 岗位序号 */@Excel(name = "岗位序号",orderNum = "1",width = 20)private Long postId;/** 岗位编码 */@Excel(name = "岗位编码",orderNum = "2",width = 20)@NotBlank(message = "岗位编码不能为空")@Size(min = 0, max = 64, message = "岗位编码长度不能超过64个字符")private String postCode;/** 岗位名称 */@Excel(name = "岗位名称",orderNum = "3",width = 20)@NotBlank(message = "岗位名称不能为空")@Size(min = 0, max = 50, message = "岗位名称长度不能超过50个字符")private String postName;/** 岗位排序 */@Excel(name = "岗位排序",orderNum = "4",width = 10)@NotBlank(message = "显示顺序不能为空")private String postSort;/** 状态(0正常 1停用) */@Excel(name = "状态",orderNum = "5",width = 20,replace = {"正常_0","停用_1"})private String status;
}
easyPoi 注解导出 动态隐藏列相关推荐
- element table v-for动态隐藏列
element table v-for动态隐藏列 这个动态列是我项目中觉得比较好玩的一个功能,他列表不固定,后端数据库表也不固定,其实还有个高级筛选,这两个是配套使用的, <el-tablere ...
- Jquery datatable 动态隐藏列(根据有无值)
一.场景 前端利用datatable初始化的时候会向后端调用数据,需求是 要动态的使某一列根据传回来的一个标志位是否有值来决定显示与否 这是当前传回值有活动优惠幅度的情况下: 这是没有活动优惠的情况下 ...
- telerik:RadGrid导出Excel隐藏列
//在导出时直接隐藏不需要导出的列 protected void btnExcel_Click(object sender, EventArgs e) { rgProduct.Columns[0].V ...
- kendo ui 动态隐藏列_kendoUI动态改变grid复选框变单选框
最近遇到一个需求需要动态把grid复选框列变成单选框,先上复选grid代码 复选grid 代码效果 查询了kendoUI的官方文档得到解释 官方文档 查询大佬们博客发现: selectable :Bo ...
- DataGridView导出Excel 隐藏列不显示
//导出Excel private void btnExc_Click(object sender, EventArgs e) { string ...
- kendo ui 动态隐藏列_Kendo UI使用教程:Kendo UI Grid中的动态数据(一)
本教程将为大家介绍如何逐步创建具有动态数据的Kendo UI grids.当您在一遍又一遍输入相同代码时,可以知道有些是可以关闭的,您输入的代码正在获取WET.创建具有动态数据的可编辑Kendo UI ...
- EasyPoi导出excel动态选择列
主要使用easypoi中的ExcelExportEntity类对列进行封装,可以设置列的属性. 下面直接贴出自己的代码:(注意data数据类型List中的必须为map,不能为实体类,否则会报错) po ...
- easyexcel 动态列_easyexcel动态表头列导出SequenceDiagram 阅读源码事半功倍
EasyExcel简介 Java解析.生成Excel比较有名的框架有Apache poi.jxl.但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢 ...
- easyExcel导入导出(列锁定单元格、表头合并、导出类型限制、锁定单元格增加底色、设置密码、隐藏列等)
easyexcel官网文档:https://www.yuque.com/easyexcel/doc/easyexcel easyexcel {maven 版本} GitHub网址:https://gi ...
最新文章
- 程序文档的重要性理解
- logstash tcp multihost output(多目标主机输出,保证TCP输出链路的稳定性)
- 不可能的工作:在FBX模型导入脚本中生成模型的预置体
- php下载数据表,javascript – 如何使用php下载表数据作为excel表..?
- Didn't find class cn.jpush.android.service.DownloadProvider on path:
- kernel开启启动log_MySql启动数据库设置初始密码
- TensorFlow中文社区
- .net与java之争
- 股票软件开发中全推与点播的区别(自己留作记录的,请csdn的小编别乱删我的文章)...
- 【CCCC】L2-013 红色警报 (25分),,并查集计算集合个数
- hping 详解_hping3使用
- Macbook Pro 201 装Win10 声卡_直播_个人工作室入门_1K-2k价位录音编曲声卡推荐
- SC-02-04-外包软件开发SOW工作说明书
- 起底 Telegram 的发家史:Pavel Durov 的游戏才刚刚开始
- Qt安装包下载(Windows平台)
- 2022年软考时间是怎么安排的,有哪些工种可以选择?如何备考?
- linux分区sda和sdb合并,给系统新添加硬盘sdb后,怎么分配给sda下某个分区
- 计算机培训感想幼儿园,幼儿园指南培训心得感想
- 小程序在同一个页面中,当改选radio选项的时候,显示出不同的内容,不触碰事件时都隐藏?
- 微信小程序制作看图工具