`

利用Java反射实现通用的Excel报表

阅读更多
最近有很多客户报表需要提供客户下载,需要生成一个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利用反射导入导出Excle

    本文将深入探讨如何利用Java反射机制来实现Excel的导入和导出,并生成相应的实体类。 首先,我们需要理解反射的基本概念。在Java中,`java.lang.Class`类代表运行时的类信息,通过`Class.forName()`或对象的`...

    java通用的导入导出excel工具

    本工具是基于Java反射机制实现的通用Excel导入导出类,它提供了便捷的方式来读取和写入Excel文件,适用于多种场景。下面我们将深入探讨这个工具的工作原理、使用方法以及相关的Java Excel处理知识。 1. **Java反射...

    java_poi导入excel通用工具类V0915

    "java_poi导入excel通用工具类V0915" 提供了一种通用的方式来处理Excel数据的导入工作,它支持多种赋值方式,包括单个对象、列表对象以及指定坐标的赋值。 首先,让我们深入理解一下这个工具类的主要功能: 1. **...

    java中,list集合数据导出到excel表格通用工具类

    在Java编程中,将List集合数据导出到Excel表格是一个常见的需求,特别是在数据分析、报表生成或数据导出等场景。本实例提供了一个通用工具类,能够处理多种不同类型的对象集合,实现了最大化的通用性,使得开发者...

    java导入导出通用模板

    总结起来,Java导入导出通用模板是利用自定义注解提供元数据,通过反射实现动态操作,结合Java POI库处理Excel文件,以实现数据的灵活导入和导出。这种模板化的设计模式在Java开发中具有广泛的应用价值,尤其是在...

    Excel导入导及动态验证

    此外,导出Excel时,我们也可以利用反射来动态地设置单元格的值。通过获取数据对象的字段值,我们可以将其填入对应的单元格。同时,还可以根据字段的注解设置单元格的样式,如颜色、背景色等。 总结来说,结合JXL库...

    通用导入Excel

    "通用Excel导入"可能就是基于Apache POI进行封装,以提供更简洁的接口,使得开发者无需深入了解POI的底层细节,也能高效地完成Excel数据的导入工作。 首先,我们需要理解Excel文件的结构。Excel文件本质上是XML文件...

    Excel导入通用类 源码

    总的来说,这个Excel导入通用类结合了Java反射、JXL库和properties配置,提供了一种高效、灵活的解决方案,能够方便地处理各种类型的Excel数据。开发者可以通过理解和修改源码,来适应他们的特定业务场景,提高工作...

    excel-demo.rar

    这个项目可能包含了代码示例,演示如何读取Excel文件并利用Java的反射机制将数据映射到JavaBean对象中。 Apache POI是Apache软件基金会的开源项目,主要为微软的Office文档格式提供读写功能,包括Excel(XLS、XLSX)...

    Excel表格操作实用工具类

    本实用工具类利用Java编程语言中的泛型、反射和Apache POI库,实现了对Excel表格的强大功能,以适应各种实体封装的报表表格需求。 首先,让我们深入理解一下核心概念: 1. **泛型**:Java泛型是一种在编译时检查...

    基于注解导出excel

    在Java编程中,导出Excel是一项常见的需求,特别是在数据分析、报表生成或数据交换等场景下。基于注解的导出方式可以提供更加简洁、灵活的代码实现,减少重复工作,并提高代码可读性。本篇将详细介绍如何使用注解与...

    Java处理Excel文件-excel文件的创建,删除,写入,读取.docx

    在Java编程中,处理Excel文件是一项常见的任务,尤其是在数据分析、报表生成和数据导入导出等场景。Apache POI库是Java中广泛使用的处理Microsoft Office文档的库,其中包括对Excel文件的支持。本篇文章将详细介绍...

    java 生成固定 java模板类导入exc文件

    3. Java反射API,用于动态生成和修改类结构。 4. 文本模板库,如FreeMarker或Velocity,用于动态生成Java源代码。 5. 数据驱动测试,利用Excel文件作为测试输入。 在实际项目中,这些技术组合起来可以极大地提高...

    参考资料-Ja-12、Ja-15、Ja-19、Ja-29(1)、Ja-29(2)、Ja-32(1)、Ja-32(2).zip

    5. **Ja-32(1)**和**Ja-32(2)**: 可能涉及Java高级主题,如反射、JNI(Java Native Interface)、设计模式或Java应用的部署和优化。 由于这些文件的扩展名为.XLS,我们可以假设它们是Microsoft Excel工作表,可能...

    万能后台管理模板javaweb

    28. SQL编辑器:强大的SQL编辑器,支持编辑语句复杂查询语句,生成动态报表,可导出excel --------------------------------------------------------------------------------------------------------------------...

Global site tag (gtag.js) - Google Analytics