这是我自己写的创建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;
}
}
分享到:
相关推荐
本教程将深入探讨如何利用JExcelAPI在Java应用程序中操作Excel。 首先,我们来了解一下`jxl.jar`,这是JExcelAPI的核心库文件。在你的项目中,你需要将这个jar文件添加到类路径(classpath)中,以便能够使用...
Java在处理Excel文件时,经常会使用到各种库,其中JExcelAPI是一个早期广泛使用的开源库,版本号为2.6.2。这个库允许Java开发者方便地读取、写入和操作Excel文件,特别是老版本的.xls格式。本文将详细探讨如何使用...
首先,Java提供了多种库来操作Excel,如Apache POI、JExcelAPI、OpenXLS等,其中最常用的是Apache POI。Apache POI是Java社区开发的一个开源项目,它提供了API来读取、创建和修改Microsoft Office格式的文件,包括...
Java中的Excel操作主要依赖于第三方库,如JExcelApi(也称为jxl),这是一个非常流行的API,用于读取和写入Microsoft Excel文件。在本文中,我们将深入探讨如何使用JExcelApi进行Java中的Excel导入与导出。 首先,...
标题"jexcelapi,java操作Excel表jar包"表明这是一个Java库,主要用于处理Excel文件。jExcelAPI(有时也简称为jxl)是一个开源的Java库,它允许开发者读取、写入和修改Microsoft Excel电子表格。这里的"jar包"指的是...
Java操作Excel是一项常见的任务,特别是在数据处理和报告生成中。JExcelApi是一个强大的库,它允许Java开发者读取、写入以及修改Excel文件,而无需依赖Microsoft Office套件。这个工具因其易用性和广泛的功能而备受...
Java操作Excel的开源库在开发过程中常常被广泛使用,特别是在数据处理、报表生成以及与用户交互的场景下。JExcelAPI是一个这样的库,它允许Java开发者方便地读取、写入以及修改Microsoft Excel文件,无需依赖Excel...
《使用Java进行Excel操作:深度解析jExcelAPI》 在Java开发中,处理Excel文件是一项常见的任务,尤其在数据导入导出、报表生成等领域。jExcelAPI是一个强大的开源库,它允许开发者通过Java代码直接操作Excel文件,...
JExcelAPI,全称为Java Excel API,是一个完全用Java编写的库,允许开发者无缝地处理Excel工作簿、工作表、单元格等对象。这个库特别适用于需要将Excel数据导入到数据库,或者从数据库导出数据到Excel报告的场景。...
在这个场景中,我们使用了一个名为 JExcelApi(简称 JXL)的 Java 库来实现这个功能。JXL 是一个开源的 Java 库,允许程序员读取、写入和修改 Microsoft Excel 文件。以下是对给定代码的详细解释: 首先,导入所需...
Java库如Apache POI和JExcelAPI提供了对Excel的支持,但这里我们主要关注使用注解的库——例如,`OpenPojoExcel`或`XLSheet Annotation Processor`。这些库允许开发者通过在类和方法上添加特定注解,来定义Excel工作...
在Java中,我们可以使用多种库来处理Excel文件,例如Apache POI、JExcelAPI、OpenCSV等。本篇文章将重点介绍Apache POI库,它是Java处理Microsoft Office格式文件的一个强大工具。 Apache POI库提供了对Microsoft ...
以下将详细介绍如何使用Java来操作Excel。 1. **Apache POI库** Apache POI是Java社区中最广泛使用的库,它提供了对Microsoft Office格式(包括Excel)的API支持。要使用Apache POI,首先需要将其添加到项目依赖中...
Java作为一种广泛使用的编程语言,提供了多种库和工具来实现对Excel和Word的操作。本篇将详细讲解如何使用Java进行Excel和Word的处理。 首先,我们关注的标题"Java操作Excel和Word"涉及到两个主要部分:Excel和Word...
本文将深入探讨如何使用Java来读取、写入和修改Excel文件,主要涉及的库有Apache POI和JExcelApi。 Apache POI是Apache软件基金会的一个开源项目,提供了处理Microsoft Office格式文件的能力,包括Excel(.xls和....
相比之下,JExcelApi也是一个用于Java操作Excel的接口,虽然知名度不如Apache POI,但在某些功能上表现更优,如更简单地实现合并单元格的边框设置,并且在处理中文字符时相对更加友好,无需复杂的编码设置。...
本示例"java操作Excel的真删改查例子"提供了完整的代码示例,帮助开发者快速掌握如何使用Java对Excel进行读写、删除、修改和查询操作。下面将详细解释其中涉及的主要知识点: 1. **Apache POI库**:Apache POI是...
7. **易用性**:jExcelAPI的API设计直观,易于学习和使用,开发者可以通过简单的代码就能实现复杂的Excel操作。 在实际项目中,使用jExcelAPI时,你需要将提供的jar包添加到项目的类路径中,然后就可以通过import...