通过注解实现通用导出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,支持自定义多表头,使用委托处理字段格式化及字段值的 ...
随机推荐
- scrapy实战6爬取IT桔子国内所有融资公司:
爬取融资公司,融资公司简介,融资时间,轮次,融资额,投资方,股权占比以及融资公司完整融资历史 如图 源码地址:https://github.com/huwei86/spiderITjuzi
- Scrum是脆弱的,不敏捷的
正如标题所示,这篇文章是关于 Scrum 的两个不同方面.第一部分涉及 Scrum 不敏捷,第二部分涉及 Scrum 脆弱. 在详细介绍之前,简短的免责声明:我在这篇文章(以及一般博客中)中提出的所有 ...
- 「数据分析」Sqlserver中的窗口函数的精彩应用之数据差距与数据岛(含答案)
上一篇介绍过数据差距与数据岛的背景,这里不再赘述,请翻阅上一文.此篇在Sqlserver上给大家演示1000万条记录的计算性能. 测试电脑软硬件说明 一般般的笔记本电脑,2017年7月,价格:4500 ...
- 关键字static、final
final final能修饰类.修饰方法.能修饰属性. 修饰类:该类不能被继承. 修饰方法:该方法不能被重写.所以abstract和final不能同时用 修饰属性/变量:该属性/变量为常量,该值不能再 ...
- springboot3(目录结构)
2.springboot中的目录结构 1.基本信息 - static :保存所有的静态资源,css.js.img - templates :保存所有的模版页面(springboot内嵌tomcat,默 ...
- C语言入门2-程序设计的灵魂—算法及Raptor的应用
一. 什么是算法(5个特性) 算法就是 解决问题的方法和步骤. 算法为解决一个具体问题而采取的确定的 有限的 执行步骤 ,仅指 计算机 能执行的算法. 算法是程序设计的灵魂和核心 ...
- Java 将PDF 转为Word、图片、SVG、XPS、Html、PDF/A
本文将介绍通过Java编程来实现PDF文档转换的方法.包括: 1. PDF转为Word 2. PDF转为图片 3. PDF转为Html 4. PDF转为SVG 4.1 将PDF每一页转为单个的SVG ...
- 调用百度API进行文本纠错
毕设做的是文本纠错方面,然后今天进组见研究生导师 .老师对我做的东西蛮感兴趣.然后介绍自己现在做的一些项目,其中有个模块需要有用到文本纠错功能. 要求1:有多人同时在线编辑文档,然后文档功能有类似Wo ...
- 1. 两数之和 Java解法
这题属于Leetcode的签到题,基本上每个人一进来就是这题. 用哈希思想来做就是最好的解答. 如果一个target - num[i] 存在那么就返回那个数字对应的下标和当前元素的下标. public ...
- 初探Oracle全栈虚拟机---GraalVM
官方说明: GraalVM是一个生态系统和共享运行时,不仅提供基于JVM的语言(如Java,Scala,Groovy和Kotlin)的性能优势,还提供其他编程语言(如JavaScript,Ruby,P ...