以前写过用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;
}
}
}
}
闲暇之余,自己写了一下,欢迎交流。
分享到:
相关推荐
JXL库是一个广泛使用的Java库,它允许开发者读取、写入和修改Excel文件。本篇将深入探讨如何使用JXL库在Java中打印Excel报表。 首先,要使用JXL库,你需要在项目中引入它的依赖。在本例中,`jxl.jar`是JXL库的核心...
`jxl`库是一个广泛使用的第三方库,它允许开发者轻松地读取、写入和修改Excel文件。本篇文章将深入探讨如何利用`jxl.jar`包来实现这一功能。 首先,确保你已经正确地将`jxl.jar`文件添加到你的项目类路径中。这可以...
一旦引入了JXL库,我们就可以开始创建Excel文件了。以下是一个简单的示例,展示了如何生成一个包含数据的Excel文件: ```java import jxl.*; import jxl.write.*; public class ExcelWriter { public static void...
Java 使用 JXL 进行Excel导入导出是一个常见的任务,特别是在数据处理和分析场景中。JXL 是一个 Java 库,允许开发者方便地读取、写入和操作 Excel 文件(.xls 格式)。以下是对这个主题的详细阐述: 1. **JXL 概述...
创建Excel文件的基本步骤如下: 1. **创建工作簿**:JXL提供`Workbook`类来代表Excel工作簿。可以通过`Workbook.createWorkbook()`方法创建一个新的工作簿对象。 ```java Workbook workbook = Workbook....
3. **创建Excel文件** 使用JXL,你可以创建一个新的Excel工作簿,然后向其中添加工作表。每个工作表由多个行和列组成,每个单元格可以存储不同类型的数据。例如: ```java WorkbookSettings ws = new ...
通过以上步骤,我们可以实现在Java程序中使用JXL和POI库给Excel文件添加动态水印的功能。这种技术不仅适用于企业内部的文档管理,还可以用于任何需要保护文档版权和安全性的场景。希望这篇教程能够帮助到有类似需求...
1. **创建Excel文件**:通过`Workbook.createWorkbook`方法创建一个新的Excel文件。 2. **创建工作表**:使用`createSheet`方法为Excel文件添加新的工作表。 3. **定义下拉列表数据源**:通常是一个包含多个选项的`...
本示例将介绍如何使用Java创建Excel文件并写入数据,主要涉及的库是`jxl`,这是一个用于读写Excel文件的开源Java库。 首先,我们需要引入`jxl`库。`jxl.jar`包含了一系列的类和接口,用于处理Excel文件的各种操作。...
JXL库是一个广泛使用的开源库,它允许开发者在Java应用程序中方便地读取和写入Excel文件。本篇将详细介绍如何使用JXL进行Excel的读写操作,并提供一个在MyEclipse环境中可以直接运行的示例代码。 首先,你需要在...
本文将详细介绍如何使用JXL库结合Java网络编程技术来实现从指定URL下载Excel文件,并将其保存到本地指定目录的功能。此外,我们还将简单介绍如何使用JXL库读取下载的Excel文件的基本数据。 #### 关键技术点解析 ##...
创建Excel文件的基本流程包括: - 使用`Workbook.createWorkbook()`方法创建一个新的可写入的工作簿对象。 - 调用`createSheet()`方法创建一个工作表,并指定工作表的名称和位置。 - 创建`Label`或`Number`对象来...
创建Excel文件 ```java package test; import java.io.File; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; public class CreateExcel { ...
`jxl`库是Java中一个广泛使用的库,它允许开发者方便地读取和写入Excel文件(.xls格式)。本篇将详细介绍如何利用`jxl`库来操作Excel文件,并结合实例说明如何从Excel文件中提取数据并生成TXT文件。 首先,我们需要...
创建Excel文件主要涉及以下步骤: 1. 创建`WritableWorkbook`对象,指定文件名和工作簿类型(如xls或xlsx)。 2. 在工作簿中添加`WritableSheet`,代表一个工作表。 3. 添加`WritableCell`,包括数值、字符串、日期...
### 创建Excel文件: - 使用 POI,你可以通过创建 `Workbook` 对象开始创建新的Excel文件。对于 .xls 文件,使用 `HSSFWorkbook`;对于 .xlsx 文件,使用 `XSSFWorkbook`。 - 接着,创建 `Sheet` 对象代表工作表,并...
`jxl`库是一个流行的Java库,它允许开发者读取、写入和修改Excel文件。本教程将详细介绍如何使用`jxl`库在导出Excel时添加水印,以及涉及的核心类`WritableWorkbook`、`WritableSheet`和`WritableCellFormat`。 `...
在Java编程环境中,JXL库是一个非常实用的工具,它允许开发者轻松地读取、写入和修改Excel文件。标题“jxl操作excel文件例子”指的是利用JXL库进行Excel文件处理的实际应用。描述中提到的“通过jxl操作excel,简单...
Java jxl库是一个广泛使用的工具,它允许程序员在Java应用程序中读取、写入和修改Microsoft Excel文件。这个"Java jxl操作Excel97-2003 eclipse可运行项目实例"提供了一个实用的示例,帮助开发者了解如何在Eclipse...
根据提供的文件信息,我们可以总结并深入探讨以下几个与...以上是关于如何使用Java JXL库导出Excel文件的详细介绍,涵盖了从环境准备到具体实现步骤的全过程。希望这些知识点能够帮助您更好地理解和应用Java JXL库。