最近有很多客户报表需要提供客户下载,需要生成一个Excel的格式文件,所以写了
一个通用的Excel报表生成代码供各个地方使用:
public <T> void createExcelReport(List<T> reports,Map<String,String> headerMap,OutputStream output) throws IOException {
if(reports == null || reports.isEmpty()) return;
Workbook wb = new HSSFWorkbook();
HSSFSheet sheet = (HSSFSheet) wb.createSheet("报表");
HSSFRow row = sheet.createRow(0);
//create header
Object report = reports.get(0);
Field[] fields = report.getClass().getDeclaredFields();
for(int i = 0; i < fields.length; i++){
String headValue = headerMap.get(fields[i].getName());
row.createCell(i).setCellValue(headValue);
sheet.setColumnWidth(i, 20 * 256);
}
//fill the data
for(int i = 0; i < reports.size(); i++){
Object rp = reports.get(i);
row = sheet.createRow(i+1);
for(int j = 0; j < fields.length; j++){
String getMethodName = "get" + StringUtils.capitalize(fields[j].getName());
Method method = null;
try {
method = rp.getClass().getMethod(getMethodName, null);
}catch(NoSuchMethodException e){//for boolean type isField
getMethodName = "is" + StringUtils.capitalize(fields[j].getName());
try {
method = rp.getClass().getMethod(getMethodName, null);
} catch (Exception ex){
throw new RuntimeException("Create Report failed!",ex);
}
}
if(method != null){
Object value;
try {
value = method.invoke(rp);
value = value == null ? "" : value;
row.createCell(j).setCellValue(value.toString());
} catch (Exception e) {
throw new RuntimeException("Create Report failed!",e);
}
}
}
}
wb.write(output);
}
分享到:
相关推荐
本文将深入探讨如何利用Java反射机制来实现Excel的导入和导出,并生成相应的实体类。 首先,我们需要理解反射的基本概念。在Java中,`java.lang.Class`类代表运行时的类信息,通过`Class.forName()`或对象的`...
本工具是基于Java反射机制实现的通用Excel导入导出类,它提供了便捷的方式来读取和写入Excel文件,适用于多种场景。下面我们将深入探讨这个工具的工作原理、使用方法以及相关的Java Excel处理知识。 1. **Java反射...
"java_poi导入excel通用工具类V0915" 提供了一种通用的方式来处理Excel数据的导入工作,它支持多种赋值方式,包括单个对象、列表对象以及指定坐标的赋值。 首先,让我们深入理解一下这个工具类的主要功能: 1. **...
在Java编程中,将List集合数据导出到Excel表格是一个常见的需求,特别是在数据分析、报表生成或数据导出等场景。本实例提供了一个通用工具类,能够处理多种不同类型的对象集合,实现了最大化的通用性,使得开发者...
总结起来,Java导入导出通用模板是利用自定义注解提供元数据,通过反射实现动态操作,结合Java POI库处理Excel文件,以实现数据的灵活导入和导出。这种模板化的设计模式在Java开发中具有广泛的应用价值,尤其是在...
此外,导出Excel时,我们也可以利用反射来动态地设置单元格的值。通过获取数据对象的字段值,我们可以将其填入对应的单元格。同时,还可以根据字段的注解设置单元格的样式,如颜色、背景色等。 总结来说,结合JXL库...
"通用Excel导入"可能就是基于Apache POI进行封装,以提供更简洁的接口,使得开发者无需深入了解POI的底层细节,也能高效地完成Excel数据的导入工作。 首先,我们需要理解Excel文件的结构。Excel文件本质上是XML文件...
总的来说,这个Excel导入通用类结合了Java反射、JXL库和properties配置,提供了一种高效、灵活的解决方案,能够方便地处理各种类型的Excel数据。开发者可以通过理解和修改源码,来适应他们的特定业务场景,提高工作...
这个项目可能包含了代码示例,演示如何读取Excel文件并利用Java的反射机制将数据映射到JavaBean对象中。 Apache POI是Apache软件基金会的开源项目,主要为微软的Office文档格式提供读写功能,包括Excel(XLS、XLSX)...
本实用工具类利用Java编程语言中的泛型、反射和Apache POI库,实现了对Excel表格的强大功能,以适应各种实体封装的报表表格需求。 首先,让我们深入理解一下核心概念: 1. **泛型**:Java泛型是一种在编译时检查...
在Java编程中,导出Excel是一项常见的需求,特别是在数据分析、报表生成或数据交换等场景下。基于注解的导出方式可以提供更加简洁、灵活的代码实现,减少重复工作,并提高代码可读性。本篇将详细介绍如何使用注解与...
在Java编程中,处理Excel文件是一项常见的任务,尤其是在数据分析、报表生成和数据导入导出等场景。Apache POI库是Java中广泛使用的处理Microsoft Office文档的库,其中包括对Excel文件的支持。本篇文章将详细介绍...
3. Java反射API,用于动态生成和修改类结构。 4. 文本模板库,如FreeMarker或Velocity,用于动态生成Java源代码。 5. 数据驱动测试,利用Excel文件作为测试输入。 在实际项目中,这些技术组合起来可以极大地提高...
5. **Ja-32(1)**和**Ja-32(2)**: 可能涉及Java高级主题,如反射、JNI(Java Native Interface)、设计模式或Java应用的部署和优化。 由于这些文件的扩展名为.XLS,我们可以假设它们是Microsoft Excel工作表,可能...
28. SQL编辑器:强大的SQL编辑器,支持编辑语句复杂查询语句,生成动态报表,可导出excel --------------------------------------------------------------------------------------------------------------------...