以前写过用jxl读取excel的,但是一直没有写出用jxl生成excel,项目中用来生产报表的也是一个一个的赋值,然后循环的方式去生成,感觉不适用,也不方便。
这里用Java的反射机制,在生成报表文件的时候动态获取对象的属性,然后生成相应的报表文件。我这里是将要写入excel的数据信息存放在一个List中,然后通过反射机制获取与excel表头标题的的属性,与之匹配,然后写入到文件中。
下面就是我的具体的实现方法:
package com.lzb.common;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
public class JxlCreateExcel {
/**
* 单例模式
*/
private static JxlCreateExcel instance = null;
public JxlCreateExcel() {};
public static synchronized JxlCreateExcel getInstance() {
if(instance==null)
instance = new JxlCreateExcel();
return instance;
}
/**
*
* 功能描述:将生成报表文件, 单线程5w条没问题
*
* @author lizhenbin
* <p>创建日期 :May 7, 2012 5:50:58 PM</p>
*
* @param dataList POJO要打印的数据,在list中
* @param obj POJO,属性和dataList的Object属性一致
* @param fileUrl 产生Excel文件的目录位置和名字(C:\test.xls)
* @param sheetName 表页的名称
* @return
*
* <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
*/
public static boolean create(List<Object> dataList,
Object obj, String fileUrl, String sheetName) {
WritableWorkbook wwb = null;
OutputStream outs = null;
try {
Class clazz = obj.getClass();
// 构建报表POJO,必须设置都是public属性
/**
* 表头属性
*/
Field[] fields = clazz.getFields();
List<Map<Object, Object>> exelist = new ArrayList<Map<Object, Object>>();
Map<Object, Object> map = new HashMap<Object, Object>();
for(Field f : fields) {
Object key = f.getName();
Object value = f.get(obj);
map.put(key, value);
}
exelist.add(map);
outs = new FileOutputStream(fileUrl);
wwb = Workbook.createWorkbook(outs);
WritableSheet sheet = wwb.createSheet(sheetName, 0);
Label label = null;;
List<Object> titles = new ArrayList<Object>();
/**
* 构建excel表头
*/
for(Iterator<Map<Object, Object>> itor = exelist.iterator(); itor.hasNext();){
Map<Object, Object> tempMap = itor.next();
Set<Object> keySet = tempMap.keySet();
int cols = 0;
for(Object s : keySet) {
label = new Label(cols, 0, (String) tempMap.get(s));
titles.add(s);
sheet.addCell(label);
cols++;
}
}
/**
* 输出的文件内容
*/
int row = 1;
for(Object data : dataList) {
int col = 0;
Class dataClazz = data.getClass();
for(Object key : titles) {
Field fd = dataClazz.getField((String) key);
label = new Label(col, row, (String) fd.get(data));
sheet.addCell(label);
col++;
}
row++;
}
wwb.write(); // 写入数据
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
try {
wwb.close(); // 关闭文件
outs.close();
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}
}
闲暇之余,自己写了一下,欢迎交流。
分享到:
相关推荐
java向EXCEL中写入数据。里面有一个ExcelWrite.java的文件和一个jxl的jar包。
java创建excel文件所需的jar包(jxl.jar , poi.jar)
java jxl 通过excel模板创建新文件并将数据导入excel,实现按行、列插入数据
JAVA EXCEL API的一些总结 要往xls文件里面写入数据的时候需要注意的是第一要新建一个xls文件 OutputStream os=new FileOutputStream("c:\\excel2.xls"); 再建完这个文件的时候再建立工作文件 jxl.write....
Java创建Excel文件所需的所有依赖包:xmlbeans-2.3.0.jar,poi-ooxml-schemas-3.9-20121203.jar,poi-ooxml-3.9-20121203.jar,poi-3.9-20121203.jar,jxl.jar,dom4j.jar
使用Windows操作系统的朋友对Excel(电子表格)一定不会陌生,但是要使用Java语言来操纵Excel文件并不是一件容易的事。在Web应用日益盛行的今天,通过Web来操作Excel文件的需求越来越强烈,目前较为流行的操作是在...
poi是一个Java api组件,用于处理execel和doc文件 jxl可以读取,创建,更新Excel文件,使用该api非windows系统也可以通过纯java来处理Excel。
这样只是说可以访问到 Excel 文件,但是还不能真正的操纵 Excel 文件,本文将给大家一个惊喜,向大家介绍一个开放源码项目,Java Excel API,使用它大家就可以方便地操纵 Excel 文件了。 jxl.jar 在我的资源中也有...
//创建Label对象 Label lableA = new Label(0,i,stuu); ws.addCell(lableA); } for(String stuidd:stuid){ j++; String stuids = stuidd.trim(); Label labelB = new Label(1,j,stuids); ws....
java操作excel用的jxl.jar包中的源码?在jxl.demo.Demo这个类,运行一下,在创建好的excel中有很多的例子。大家可以看一下
4、数据正确,创建excel文件,将数据保存到文件中 5、servlet将文件发送到客户端 6、客户端保存文件 -------------------------------------------------------- 1、当查询时将select的结果存入到对象中 2、将对象...
利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,其他操作和创建Excel是一样的。下面的例子是在我们已经生成的Excel文件中添加一个工作表: //修改Excel的类,添加一...
Java Excel 是一开放源码项目,通过它Java 开发人员可以读取Excel 文件的内容、创建新的Excel 文件、更新已经存在的Excel 文件。使用该API 非Windows操作系统也可以通过纯Java 应用来处理Excel 数据表。因为是使用...
JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。因为它是使用...
Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新 已经存在的Excel文件。下面是使用方法,包括去掉网格线、字体设置、单元格设置、对齐方式等设置
可使用户利用JAVA操作EXCEL文件,Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。。使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。
利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,其他操作和创建Excel是一样的。下面的例子是在我们已经生成的Excel文件中添加一个工作表: //修改Excel的类,添加一...
//创建excel区域名称 WritableSheet sheet = book.createSheet("客户资料" + i, i); int count = (i + 1) * pageSize > userInfoList.size() ? userInfoList.size() : (i + 1) * pageSize; // ...
在Web应用日益盛行的今天,通过Web来操作Excel文件的需求越来越强烈,并要求在浏览器中展现报表,通过开放源码项目——Java Excel API简称JXL,使用它大家就可以方便地操纵Excel文件了。实现Excel项目报表的处理。 ...
1 从Excel文件读取数据表 Java Excel API既可以从本地文件系统的一个文件(.xls),也可以从输入流中读取Excel数据表。读取Excel数据表的第一步是创建Workbook(术语:工作薄),下面的代码片段举例说明了应该如何操作...