`
夏莹_合肥
  • 浏览: 180342 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

用java操作excel,jexcelapi

    博客分类:
  • Java
阅读更多

这是我自己写的创建Excel的一个类,仅供参考,用的是jxl.jar(见附件)。偷懒总是有方法的,感觉像创建Ext的Grid一样。

接口定义:

 

public void generateExcel(List<?> entities, Column[] columns, String fileName);

 

实现:

package com.yingxia.trms.excel;

import java.io.File;
import java.lang.reflect.Method;
import java.util.List;

import jxl.Workbook;
import jxl.format.Colour;
import jxl.write.Label;
import jxl.write.WritableCell;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

public class ExcelGeneratorImpl implements ExcelGenerator {

	@Override
	public void generateExcel(List<?> entities, Column[] columns, String fileName) {

		try {
			
			String path = ExcelGeneratorImpl.class.getResource("/").getPath();
			path = path.replace("WEB-INF/classes/", "") + "excel/" + fileName + ".xls";
			
			File file = new File(path);
			if(file.exists()) {
				file.delete();
			}
			
			WritableWorkbook workbook = Workbook.createWorkbook(new File(path));
			WritableSheet sheet = workbook.createSheet("First sheet", 0);
			
			// header
			for (int col = 0; col < columns.length; col++) {
				Label labelHeader = new Label(col, 0, columns[col].getHeader());
				sheet.addCell(labelHeader);
			}
			
			// body
			for (int row = 1; row <= entities.size(); row++) {
				for (int col = 0; col < columns.length; col++) {
					
					String columnName = columns[col].getName();
					Object columnValue = getFieldValue(entities.get(row - 1), columnName);
					
					WritableCell cell = null;
					if(columns[col].getType().equals("string")) {
						cell = new Label(col, row, columnValue.toString());
					} else {
						cell = new jxl.write.Number(col, row, Double.valueOf(columnValue.toString()));
					}
					
					sheet.addCell(cell);
				}
			}
			
			// sum
			for (int col = 0; col < columns.length; col++) {
				
				Column column =  columns[col];
				if(column.isNeedSum() && column.getType().equals("number")) {
					
					Double columnSum = 0.0;
					for (int row = 1; row <= entities.size(); row++) {
						Object fieldValue = getFieldValue(entities.get(row - 1), column.getName());
						columnSum += Double.valueOf(fieldValue.toString());
					}
					
					WritableFont font = new WritableFont(WritableFont.ARIAL);
					font.setColour(Colour.RED);
					font.setBoldStyle(WritableFont.BOLD);
					
					jxl.write.Number number = new jxl.write.Number(col, entities.size() + 1, columnSum, new WritableCellFormat(font));
					sheet.addCell(number);
				}
			}
			
			workbook.write();
			workbook.close();
			
		} catch(Exception ex) {
			ex.printStackTrace();
		}
	}
	
	private Object getFieldValue(Object obj, String fieldName) throws Exception {
		String getMethodName = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
		Method getMethod = obj.getClass().getMethod(getMethodName);
		return getMethod.invoke(obj);
	}

}

 

这其中用到了一个自定义的Column类

package com.yingxia.trms.excel;

public class Column {

	private String name;
	private String header;
	private String type; // string, number
	private boolean needSum = false; // must be number

	public Column() {
	}

	public Column(String name, String header, String type) {
		super();
		this.name = name;
		this.header = header;
		this.type = type;
	}
	
	public Column(String name, String header, String type, boolean needSum) {
		super();
		this.name = name;
		this.header = header;
		this.type = type;
		this.needSum = needSum;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getHeader() {
		return header;
	}

	public void setHeader(String header) {
		this.header = header;
	}

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}

	public boolean isNeedSum() {
		return needSum;
	}

	public void setNeedSum(boolean needSum) {
		this.needSum = needSum;
	}

}
 

 

分享到:
评论

相关推荐

    java 利用jexcelapi操作Excel

    本教程将深入探讨如何利用JExcelAPI在Java应用程序中操作Excel。 首先,我们来了解一下`jxl.jar`,这是JExcelAPI的核心库文件。在你的项目中,你需要将这个jar文件添加到类路径(classpath)中,以便能够使用...

    jexcelapi_2_6_2 java 读取excel java操作excel jxl API

    Java在处理Excel文件时,经常会使用到各种库,其中JExcelAPI是一个早期广泛使用的开源库,版本号为2.6.2。这个库允许Java开发者方便地读取、写入和操作Excel文件,特别是老版本的.xls格式。本文将详细探讨如何使用...

    Java操作Excel表格

    首先,Java提供了多种库来操作Excel,如Apache POI、JExcelAPI、OpenXLS等,其中最常用的是Apache POI。Apache POI是Java社区开发的一个开源项目,它提供了API来读取、创建和修改Microsoft Office格式的文件,包括...

    java导入导出excel操作( jexcelapi)

    Java中的Excel操作主要依赖于第三方库,如JExcelApi(也称为jxl),这是一个非常流行的API,用于读取和写入Microsoft Excel文件。在本文中,我们将深入探讨如何使用JExcelApi进行Java中的Excel导入与导出。 首先,...

    jexcelapi,java操作Excel表jar包

    标题"jexcelapi,java操作Excel表jar包"表明这是一个Java库,主要用于处理Excel文件。jExcelAPI(有时也简称为jxl)是一个开源的Java库,它允许开发者读取、写入和修改Microsoft Excel电子表格。这里的"jar包"指的是...

    用java操作Excel的一中非常好的工具

    Java操作Excel是一项常见的任务,特别是在数据处理和报告生成中。JExcelApi是一个强大的库,它允许Java开发者读取、写入以及修改Excel文件,而无需依赖Microsoft Office套件。这个工具因其易用性和广泛的功能而备受...

    Java操作Excel的开源库

    Java操作Excel的开源库在开发过程中常常被广泛使用,特别是在数据处理、报表生成以及与用户交互的场景下。JExcelAPI是一个这样的库,它允许Java开发者方便地读取、写入以及修改Microsoft Excel文件,无需依赖Excel...

    EXCEL 操作API(jexcelapi)

    《使用Java进行Excel操作:深度解析jExcelAPI》 在Java开发中,处理Excel文件是一项常见的任务,尤其在数据导入导出、报表生成等领域。jExcelAPI是一个强大的开源库,它允许开发者通过Java代码直接操作Excel文件,...

    jexcelapi_2_4.tar.gz_java项目_jexcelapi_2_4_jexcelapi_2_4-2.tar._j

    JExcelAPI,全称为Java Excel API,是一个完全用Java编写的库,允许开发者无缝地处理Excel工作簿、工作表、单元格等对象。这个库特别适用于需要将Excel数据导入到数据库,或者从数据库导出数据到Excel报告的场景。...

    通过java操作excel表格的工具类库

    在这个场景中,我们使用了一个名为 JExcelApi(简称 JXL)的 Java 库来实现这个功能。JXL 是一个开源的 Java 库,允许程序员读取、写入和修改 Microsoft Excel 文件。以下是对给定代码的详细解释: 首先,导入所需...

    基于注解形式的Java操作excel表格

    Java库如Apache POI和JExcelAPI提供了对Excel的支持,但这里我们主要关注使用注解的库——例如,`OpenPojoExcel`或`XLSheet Annotation Processor`。这些库允许开发者通过在类和方法上添加特定注解,来定义Excel工作...

    java操作excel工具类

    在Java中,我们可以使用多种库来处理Excel文件,例如Apache POI、JExcelAPI、OpenCSV等。本篇文章将重点介绍Apache POI库,它是Java处理Microsoft Office格式文件的一个强大工具。 Apache POI库提供了对Microsoft ...

    java操作excel的实例

    以下将详细介绍如何使用Java来操作Excel。 1. **Apache POI库** Apache POI是Java社区中最广泛使用的库,它提供了对Microsoft Office格式(包括Excel)的API支持。要使用Apache POI,首先需要将其添加到项目依赖中...

    Java操作Excel和Word

    Java作为一种广泛使用的编程语言,提供了多种库和工具来实现对Excel和Word的操作。本篇将详细讲解如何使用Java进行Excel和Word的处理。 首先,我们关注的标题"Java操作Excel和Word"涉及到两个主要部分:Excel和Word...

    java操作Excel文件

    本文将深入探讨如何使用Java来读取、写入和修改Excel文件,主要涉及的库有Apache POI和JExcelApi。 Apache POI是Apache软件基金会的一个开源项目,提供了处理Microsoft Office格式文件的能力,包括Excel(.xls和....

    Java对Excel表格的操作.doc

    相比之下,JExcelApi也是一个用于Java操作Excel的接口,虽然知名度不如Apache POI,但在某些功能上表现更优,如更简单地实现合并单元格的边框设置,并且在处理中文字符时相对更加友好,无需复杂的编码设置。...

    java操作Excel的真删改查例子

    本示例"java操作Excel的真删改查例子"提供了完整的代码示例,帮助开发者快速掌握如何使用Java对Excel进行读写、删除、修改和查询操作。下面将详细解释其中涉及的主要知识点: 1. **Apache POI库**:Apache POI是...

    jexcelapi.zip_java项目excel导入导出jar包

    7. **易用性**:jExcelAPI的API设计直观,易于学习和使用,开发者可以通过简单的代码就能实现复杂的Excel操作。 在实际项目中,使用jExcelAPI时,你需要将提供的jar包添加到项目的类路径中,然后就可以通过import...

Global site tag (gtag.js) - Google Analytics