`
lizhenbin2010
  • 浏览: 99669 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java使用JXL创建Excel文件

    博客分类:
  • J2se
阅读更多

       以前写过用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文件,并向EXCEL中写入数据

    java向EXCEL中写入数据。里面有一个ExcelWrite.java的文件和一个jxl的jar包。

    java创建excel文件所需的jar包(jxl.jar , poi.jar)

    java创建excel文件所需的jar包(jxl.jar , poi.jar)

    java 通过excel模板创建新文件并将数据导入excel,实现按行、列插入数据

    java jxl 通过excel模板创建新文件并将数据导入excel,实现按行、列插入数据

    jxl创建excel总结,超详细

    JAVA EXCEL API的一些总结 要往xls文件里面写入数据的时候需要注意的是第一要新建一个xls文件 OutputStream os=new FileOutputStream("c:\\excel2.xls"); 再建完这个文件的时候再建立工作文件 jxl.write....

    Java创建Excel文件所需的所有依赖包

    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

    使用jxl技术:jxl教程

    使用Windows操作系统的朋友对Excel(电子表格)一定不会陌生,但是要使用Java语言来操纵Excel文件并不是一件容易的事。在Web应用日益盛行的今天,通过Web来操作Excel文件的需求越来越强烈,目前较为流行的操作是在...

    java开发Excel所需 poi jxl两种jar包

    poi是一个Java api组件,用于处理execel和doc文件 jxl可以读取,创建,更新Excel文件,使用该api非windows系统也可以通过纯java来处理Excel。

    利用 JAVA 操作 EXCEL 文件

    这样只是说可以访问到 Excel 文件,但是还不能真正的操纵 Excel 文件,本文将给大家一个惊喜,向大家介绍一个开放源码项目,Java Excel API,使用它大家就可以方便地操纵 Excel 文件了。 jxl.jar 在我的资源中也有...

    jxl Java导出Excel文件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文件的源码,及例子

    java操作excel用的jxl.jar包中的源码?在jxl.demo.Demo这个类,运行一下,在创建好的excel中有很多的例子。大家可以看一下

    java导入导出excel操作(jxl)

    4、数据正确,创建excel文件,将数据保存到文件中 5、servlet将文件发送到客户端 6、客户端保存文件 -------------------------------------------------------- 1、当查询时将select的结果存入到对象中 2、将对象...

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

     利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,其他操作和创建Excel是一样的。下面的例子是在我们已经生成的Excel文件中添加一个工作表:  //修改Excel的类,添加一...

    java操作excel 学习资料、jxl.jar、自编参考代码

    Java Excel 是一开放源码项目,通过它Java 开发人员可以读取Excel 文件的内容、创建新的Excel 文件、更新已经存在的Excel 文件。使用该API 非Windows操作系统也可以通过纯Java 应用来处理Excel 数据表。因为是使用...

    Java生成和操作Excel文件

    JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。因为它是使用...

    java创建excel示例(jxl使用方法)

    Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新 已经存在的Excel文件。下面是使用方法,包括去掉网格线、字体设置、单元格设置、对齐方式等设置

    jxl.jar相关操作及说明

    可使用户利用JAVA操作EXCEL文件,Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。。使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。

    Excel数据操纵-jar包-jxl.jar

     利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,其他操作和创建Excel是一样的。下面的例子是在我们已经生成的Excel文件中添加一个工作表:  //修改Excel的类,添加一...

    用java程序对表导出Excel的源代码

    //创建excel区域名称 WritableSheet sheet = book.createSheet("客户资料" + i, i); int count = (i + 1) * pageSize &gt; userInfoList.size() ? userInfoList.size() : (i + 1) * pageSize; // ...

    jxlreport web组件

    在Web应用日益盛行的今天,通过Web来操作Excel文件的需求越来越强烈,并要求在浏览器中展现报表,通过开放源码项目——Java Excel API简称JXL,使用它大家就可以方便地操纵Excel文件了。实现Excel项目报表的处理。 ...

    java_对excel_的操作源码(有备无患)

    1 从Excel文件读取数据表 Java Excel API既可以从本地文件系统的一个文件(.xls),也可以从输入流中读取Excel数据表。读取Excel数据表的第一步是创建Workbook(术语:工作薄),下面的代码片段举例说明了应该如何操作...

Global site tag (gtag.js) - Google Analytics