本次实现主要借鉴了网上现有的一些excel导出的代码,并对其进行了一些改动,使其满足用于不需要去关心怎么在excel中填装对象,只需要为数据报表的行定义一个对象,将数据报表以列表的形式传参进去,就可以直接生成...
最近工作上有一个小需求,需要将内部管控平台上的报表增加数据导出功能,工程内部没有找到现成可用的工具包,于是决定自己手动实现一个。本次实现主要借鉴了网上现有的一些excel导出的代码,并对其进行了一些改动,使其满足用于不需要去关心怎么在excel中填装对象,只需要为数据报表的行定义一个对象,将数据报表以列表的形式传参进去,就可以直接生成通用的excel格式的数据文件。
首先,我们需要导入依赖的包
org.apache.poipoi-ooxml3.12
这里我们通过java的反射功能,从对象中获取它的字段,将字段的字段名作为excel的列名,然后遍历每个对象,通过反射将对象中的每个字段值取出来填进excel对象中,这里我们不对java的反射原理做过多的介绍,感兴趣的同学可以自行查阅相关的资料,这里直接给出相关的代码:
public class ExcelUtil{ public staticHSSFWorkbook export(Listlist, String sheetName){ if(CollectionUtils.isEmpty(list)){ return null; } T item = list.get(0); Class clazz = item.getClass(); //取出所有的字段 ListfieldList = Lists.newArrayList(clazz.getDeclaredFields()); //没有有效声明字段 if(CollectionUtils.isEmpty(fieldList)){ return null; } HSSFWorkbook wb = new HSSFWorkbook(); sheetName = sheetName == null ? clazz.getSimpleName() : sheetName; HSSFSheet sheet = wb.createSheet(sheetName); HSSFRow row = sheet.createRow(0); //取