通过注解实现通用导出Excel
Javaweb开发中数据的导入导出很常见,每次我们都需要写很多代码,所以我就在想能不能写一些通用的方法,之前已经在网上
整理过一些通用的方法,最近在网上看到一位牛人封装的更加简介,自己拿过来整理了一下。
配置注解
- 之前我们了解了Java注解的使用,现在我们正是通过注解的方式来简化javaweb中繁琐的Excel上传和下载两个功能。由于时间有限今天先实现了Excel的下载(Excel 导出)。
- 上面的就是我们的注解类的简化图。参数的意思分别是指定表头的名字+表头所占列宽度+该列是否明文显示+加密显示的方式+特殊文本的格式
数据实体类
- 有了上面的注解我们的实体类非常的简单,只是在我们平常建的Javabean的属性字段上加上我们刚才的注解就行了。
- 其中ExportConfig注解中的属性值我们可以不设置,不设置就是默认的。这里设置完成后就开始写导出了。
Excel导出
- 现在该如何获取我们的注解呢,之前的文章已经介绍了。我们得首先获得我们的Javabean的字段。
for (Field field : _class.getDeclaredFields())
- 可能会出现我们的Javabean的数据并不是完全的查出来了。所以这里我们得先看看这个字段到底有没有值。
property = BeanUtils.getProperty(data.get(0), field.getName());
- 在有值得前提下我们在获取字段的注解。
ExportConfig config = field.getAnnotation(ExportConfig.class);
- 最后我们开始讲注解的信息存在到信息类上ExportItem.java
items.add(new ExportItem.$Build()
.setField(field.getName())
.setDisplay(
"field".equals(config.value()) ? field
.getName() : config.value())
.setWidth(config.width())
.setIsExport(config.isExport())
.setContent(config.blankContent())
.setFieldTypeName(field.getClass().getSimpleName())
.setFormat(config.format())
.create());
- ExportItem 类也很简单。里面拷贝了自身的一个类实现了链式操作。这里没什么讲解的。到这里我们的表头显示设置已经完成了。下面自然就是遍历list集合数据了。当然遍历之前先设置表头样式。
ExportItem exportItem = items.get(index);
// 首先创建该行指定列的单元格
Cell cell = headRow.createCell(index);
sheet.setColumnWidth(index, (short) (exportItem.getWidth() * 35.7));
cell.setCellValue(exportItem.getDisplay());
CellStyle style = handler.getHeadCellStyle(wb);
if (style != null)
{
cell.setCellStyle(style);
}
- 在设置表身的时候我们得先去注解信息类中拿到该列显示的风格(是否是明文)。
if (exportItem.getIsExport())
- 在设置了内容之后我们还要根据注解的单元格格式进行样式的设置
setStyleByType(wb,exportItem.getFormat());
Excel输出
fileName += getExcelSuffix(type);
_response.setContentType(getContentType(type));
_response.setHeader(
"Content-disposition",
"attachment; filename="
+ new String(fileName.getBytes("gbk"), "iso8859-1"));
if (out == null)
{
out = _response.getOutputStream();
}
wb.write(out);
out.flush();
out.close();
所需jar
log4j-1.2.17.jar 日志jar包
servlet-api.jar 正常在web项目中都不需要引入该jar包
poi-3.9.jar 操作表格jar包
pi-ooxml-3.12.jar XSSFWorkbook 处理2007版本及以上的excel
调用代码
List<ExcelUser> list = adminManageServiceI.getUsers(ConstantUtil.ADMIN_ID);
// 生成Excel并使用浏览器下载
ExcelTool.$Brower(ExcelUser.class, response).toExcel(list, "用户信息");
效果
源码正在更新,导入导出全部完成在上传源码。
通过注解实现通用导出Excel的更多相关文章
- (gridcontrol等)通用导出excel z
关于DevExpress Winform 的所有可打印控件的导出excel 的通用方法,并且解决DevExpress控件自带的方法存在的缺陷问题 1.解决GridControl自带方法不能导出图片: ...
- 通用导出excel
循环导出所有行和列 def export_excel(table_name): host,user,passwd,db='192.168.0.12','root','myjcyf','us_sys' ...
- POI通用导出Excel数据(包括样式设计)
前言 前一段时间我写过通用的导入Excel,前几天也写了导出pdf格式的,还有我之前搞得导出Word,我在之前的博客也都介绍了导出和导入是一个道理,无非是一个获取一个是赋值.昨天有一位同仁看了我的Ex ...
- 利用反射实现通用的excel导入导出
如果一个项目中存在多种信息的导入导出,为了简化代码,就需要用反射实现通用的excel导入导出 实例代码如下: 1.创建一个 Book类,并编写set和get方法 package com.bean; p ...
- NPOI MVC 模型导出Excel通用类
通用类: public enum DataTypeEnum { Int = , Float = , Double = , String = , DateTime = , Date = } public ...
- MVC NPOI Linq导出Excel通用类
之前写了一个模型导出Excel通用类,但是在实际应用中,可能不是直接导出模型,而是通过Linq查询后获取到最终结果再导出 通用类: public enum DataTypeEnum { Int = , ...
- NPOI导入导出EXCEL通用类,供参考,可直接使用在WinForm项目中
以下是NPOI导入导出EXCEL通用类,是在别人的代码上进行优化的,兼容xls与xlsx文件格式,供参考,可直接使用在WinForm项目中,由于XSSFWorkbook类型的Write方法限制,Wri ...
- 一个通用的DataGridView导出Excel扩展方法(支持列数据格式化)
假如数据库表中某个字段存放的值“1”和“0”分别代表“是”和“否”,要在DataGridView中显示“是”和“否”,一般用两种方法,一种是在sql中直接判断获取,另一种是在DataGridView的 ...
- 通用的C#导出Excel 支持2003及2007以上版本
将数据导出到Excel,供用户下载是经常要使用到的一个功能,我这里进行了一些封装,目前已满足项目中导出的需求,使用DataReader导出Excel,支持自定义多表头,使用委托处理字段格式化及字段值的 ...
随机推荐
- Android native进程间通信实例-socket本地通信篇之——服务端进程异常退出解决办法
导读: 好难受啊,为什么服务端说挂就挂,明明只是客户端关闭而已,服务端怎么能挂呢? 想想,如果手机上使用一个聊天程序的时候,手机端关闭了聊天程序,那么远端服务器程序总不能说挂就挂吧!所以一定要查明真相 ...
- cookie、sessionSttorage、localStory区别
cookie.sessionSttorage.localStory都是在客户端以键值对存储的存储机制,并且只能将值存储为字符 cookie localStorage sessionStorage ...
- JavaScript函数及闭包
前面一片文章讲到过一点函数,了解到每声明一个函数就会产生一个作用域.而外面的作用域访问不了里面的作用域(把里面的变量和函数隐藏起来),而里面的可以访问到外面的.对于隐藏变量和函数是一个非常有用的技术. ...
- nginx连接资源管理
本文介绍在nginx中连接资源(即ngx_connection_t)的管理与使用. 连接池的初始化 在ngx_cycle_t结构体中维护了几个和连接相关的数据,具体如下 struct ngx_cycl ...
- 个人永久性免费-Excel催化剂功能第23波-非同一般地批量拆分工作表
工作薄的合并,许多Excel插件已有提供,Excel催化剂也提供了最佳的解决方案,另外还有工作薄的拆分和工作表的拆分,同样也是各大插件必备功能. 至于工作薄拆分,那是伪需求,Excel催化剂永远只会带 ...
- Cesium 学习(二)所支持的模型数据类型,以及转换
1.Cesium所支持的模型数据类型 目前所知的有glTF.glb.bgltf等格式的模型数据: 想要了解glTF等的知识可以看一下https://www.cnblogs.com/fuckgiser/ ...
- SQL server 2014使用导出数据为Excel
1.打开SQL server 2014,连接至数据库引擎 2.在要导出的数据库上右击,选择"任务->导出数据" 3.数据源选择"SQL Server Native ...
- 在WebApi项目里使用MiniProfiler并且分析 Entity Framework Core
在WebApi项目里使用MiniProfiler并且分析 Entity Framework Core 一.安装配置MiniProfiler 在现有的ASP.NET Core MVC WebApi 项目 ...
- halcon视频教程如何学习?怎么样才能踏入机器视觉这个行业?
本人是工作八年的视觉工程师,主要从事Halcon和Visionpro视觉开发,谈谈个人对视觉学习看法: 1.HALCON是德国MVtec公司开发的一套完善的标准的机器视觉算法包,它节约了产品成本,缩短 ...
- SpringBoot(18)---通过Lua脚本批量插入数据到Redis布隆过滤器
通过Lua脚本批量插入数据到布隆过滤器 有关布隆过滤器的原理之前写过一篇博客: 算法(3)---布隆过滤器原理 在实际开发过程中经常会做的一步操作,就是判断当前的key是否存在. 那这篇博客主要分为三 ...