`
xfox
  • 浏览: 14628 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

基于jxl对excel文件的row-bean的处理

阅读更多
最近用jxl包处理excel文件相当的方便,而且它的功能也很强大,用起来很舒服,唯一不足的就是,当我的列名很多时,要写很多的代码来取值,设值,于是就给jxl加了一个小的功能,在此分享一下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE excelfile SYSTEM  "jxl-excel-1.dtd">
<excelfiles>
	<excel name="student" class="com.bean.Student" path="F:\student.xls">
		<column column="学号" field="sno" type="String"></column>
		<column column="姓名" field="name" type="String"></column>
		<column column="年龄" field="age" type="Integer"></column>
	</excel>
</excelfiles>
这是一个配置文件,相当的好理解,excel 为一个excel文件,工程里可以为这类文件起一个别名 name="student", 该文件所对应的实体类,只要配置的列名包含在实体类里就可以了。该文件的路径,可以不用指定,后面可以用File的对象进行文件操作;column:列,三个属性都要有,对应的文件中的列名 column; 实体中的属性名 field, 该字段的类型 type.
一目了然,不做解释了。
下面介绍使用方法:
Jxl 的传统使用方法:
Workbook rwb = Workbook.getWorkbook(new File(sourcefile));//得到工作文件
Sheet rs = rwb.getSheet(0);//设置工作sheet
Cell cell = rs.getCell(0, 0);//获取单元格,再调用getContent() 方法获取值

如果我有一个学生的excel文件,字段有10个,有100行,那我就要一行行的遍历,获取每个单元格的值,在调用student的set方法赋值。注意:要小心该列是什么属性,别设置了错误的值,只要excel文件一变,你的代码就要修改了。
下面介绍我添加功能后的使用方法:
ExcelFile ef = new ExcelFile("student");//获取操作的文件
		ef.createReadBook(); //设置只读
		Student student = new Student();
		try {
			ef.row2Bean(1, student);//获取一行的信息,封装到student对象里面
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println("name:" + student.getName());//输出
		System.out.println("age:" + student.getAge());
		System.out.println("sno:" + student.getSno()); //其他的dao操作。。




不管有多少字段,只要你配置正确都可以完成。
下面介绍写入excel文件:
Student student = new Student(); //bean
		student.setSno("111");//或者从DB 里取数据
		student.setName("Jack");
		student.setAge(11);

		ExcelFile ef = new ExcelFile("student"); //设置操作文件
		ef.createWriteBook();//建立可写的文件
		ef.bean2Row(student);//追加到最后一行
	ef.bean2Row(3, student);//追加到指定的行数
		ef.write(); //写入
		ef.closeWriteBook();//关闭
 


使用就是这样,亲测,处理excel文件更加方便,如果你要更加细致的处理文件,就使用jxl提供的api。这个只能满足一些懒人的小操作。而且还没有开发完,bug那是肯定有的,下面提供设计思路,希望有空的朋友可以把他开发的更完美。
读配置:将每一个excel结点的信息,保存到Excel对象里,然后factory里的Map里,这样当需要操作时,可以获取要操作的文件的信息。
实例化ExcelFile: 主要根据name="student" 这个key 从工厂里得到Excel对象,根据path实例化File,当发现用户没有设path的值时会提示错误;student--\目录下找不到文件!
建立读写文件:调用jxl代码,建立读写文件,这部分大家可以参考jxl的API,就不做介绍了。
封装行信息到Bean 里:
public <T> T row2Bean(int row, T bean) throws Exception {
		if (!isMatch || !validation()) {
			return null;
		}
		List<String> names = getColumnsName();
		Map<String, Column> map = excel.getColumns();
		for (int i = 0; i < names.size(); i++) {
			Column c = map.get(names.get(i));
			String content = sheet.getCell(i, row).getContents();
			if (DataType.STRING.equals(c.getType())) {
				// string type
				ExcelFileUtil.setProperty(bean, c.getFiled(), content);
			}//类型只需在此重构即可
			if (DataType.INTEGER.equals(c.getType())) {
				// integer type
				ExcelFileUtil.setProperty(bean, c.getFiled(), Integer
						.parseInt(content));
			}
		}
		return null;
	}
先进性验证,看看操作的文件和配置的信息是否符合,只要配置的属性包含在Bean的属性里面,就可以通过验证,如不包含则提示错误并返回。
后面是利用反射的技术,设置Bean的值:
private final static String SET = "set"; // set method
	/**set the bean's field*/
	public static <T> void setProperty(T t, String name, Object value) {
		String methodString = getMethodString(name, SET);
		try {
			// 利用反射获取方法,设置相关的属性
			t.getClass().getMethod(methodString, value.getClass()).invoke(t,
					value);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
将Bean 写入文件,也是一样的道理,具体代码就不贴了,下面会提供源码。
文件列名 >= 配置文件 <= 实体Bean
配置文件作为中间的媒介,只需要包含与文件的列名即可,同时包含于实体的属性就可以了。
不知道jxl有没有提供这样的功能,只是自己没有找到,就写了这样的功能,然后重新设计了下,加入到jxl的包里。功能完全可以重构,解析xml用的是dom4j.
欢迎交流。
  • 大小: 16.4 KB
  • 描述: aa
  • 大小: 13.5 KB
  • 大小: 15.5 KB
0
0
分享到:
评论
2 楼 duzhijun1983 2015-02-14  
不错,真方便。
1 楼 tiger2011 2012-08-01  
作者能吧这个源码发下吗?

我的邮箱:tiger20111989@foxmail.com

谢谢

相关推荐

    Java jxl操作Excel97-2003 eclipse可运行项目实例

    jxl库可以读取现有的Excel文件,创建新的Excel文件,或者修改已有文件中的内容,使得Java开发者能够方便地集成Excel数据处理到他们的应用程序中。 2. **使用环境** 这个实例是在Eclipse集成开发环境中运行的,...

    jxl操作excel文件

    ### jxl操作Excel文件知识点详解 #### 一、jxl简介 jxl 是一款用于 Java 环境下的 Excel 操作库,由一位韩国开发者所编写。与 Apache POI 相比,jxl 的功能略显简单,但在中文支持方面表现出色。jxl API 不依赖于...

    Java实现Excel导入数据库,有完整的sql。jxl.jar,mysql-connector-java-5[1].1.7-bin.jar.zip

    首先,Java是多用途的编程语言,广泛应用于服务器端开发,而Excel的数据处理则可以通过第三方库来实现,这里我们使用的是JXL库。JXL是一个Java API,它允许开发者读取、写入和修改Excel文件。通过这个库,我们可以...

    jxl.jar,poi-3.0.1-FINAL.rar

    Java操作Excel是编程中常见的需求,特别是在数据处理和报表生成方面。这里提到的"jxl.jar"和"poi-3.0.1-FINAL....无论是jxl还是POI,它们都能帮助你轻松地在Java程序中创建、读取和修改Excel文件,实现自动化数据处理。

    利用jxl操作excel文件

    在Java编程环境中,处理Excel文件是一项常见的任务,特别是在数据分析、数据导入导出或者报表生成等场景。`jxl`库是Java中一个广泛使用的库,它允许开发者方便地读取和写入Excel文件(.xls格式)。本篇将详细介绍...

    jxl.jar----java导出数据到excel

    总结来说,jxl.jar是Java开发人员处理Excel文件的强大工具,它简化了数据导入导出的过程,使得在Java应用程序中与Excel交互变得更加便捷。无论是在报表生成、数据分析,还是数据交换方面,jxl都能发挥重要作用。

    java使用jxl打印excel报表文件

    在Java开发中,生成和处理Excel文件是一项常见的任务,特别是在数据导出或报表生成的场景。JXL库是一个广泛使用的Java库,它允许开发者读取、写入和修改Excel文件。本篇将深入探讨如何使用JXL库在Java中打印Excel...

    用jxl下载excel文件

    ### 使用JXL库下载并处理Excel文件 #### 知识点概述 本文将详细介绍如何使用JXL库结合Java网络编程技术来实现从指定URL下载Excel文件,并将其保存到本地指定目录的功能。此外,我们还将简单介绍如何使用JXL库读取...

    java利用jxl生成excel文件

    Java使用JXL库生成Excel文件是一项常见的任务,特别是在数据处理、报表生成或导出时。JXL是一个开源的Java库,允许我们读取、写入和修改Excel文件。以下将详细讲解如何使用JXL库来生成Excel文件。 首先,我们需要在...

    Excel-Jxl-master_Androidexcel_androidexceljxl_android_

    标题“Excel-Jxl-master_Androidexcel_androidexceljxl_android_”指的是一个Android应用程序项目,它使用JXL库来处理Excel文件。JXL是一个Java库,允许开发者读取、写入和修改Excel工作表。这个项目的重点是实现...

    jxl导出excel加水印.zip

    `jxl`库是一个流行的Java库,它允许开发者读取、写入和修改Excel文件。本教程将详细介绍如何使用`jxl`库在导出Excel时添加水印,以及涉及的核心类`WritableWorkbook`、`WritableSheet`和`WritableCellFormat`。 `...

    jxl操作excel文件例子

    标题“jxl操作excel文件例子”指的是利用JXL库进行Excel文件处理的实际应用。描述中提到的“通过jxl操作excel,简单方便”,暗示了JXL库的一个关键优点——简洁易用的API,使得对Excel文件的操作变得相当直观。 JXL...

    基于JXL的Excel数据导入工具

    本文将深入探讨一个基于JXL库的Excel数据导入工具,帮助开发者更高效地处理Excel数据。 JXL(Java Excel API)是一款开源的Java库,专门用于读写Microsoft Excel文件。它提供了丰富的API,使得在Java程序中处理...

    java利用jxl读取excel文件

    综上所述,`jxl`库为Java开发者提供了一个强大的工具,用于处理Excel文件。通过熟悉其API,我们可以高效地读取、解析和操作Excel数据,满足各种业务需求。不过要注意,`jxl`库只支持旧版的`.xls`格式,对于`.xlsx`新...

    jxl对excel添加水印(含有setWaterMarkImage方法).zip

    以上步骤展示了如何使用`jxl`库和Java的图像处理功能为Excel文件添加水印。需要注意的是,由于`jxl`库的限制,这种方法可能无法处理复杂的水印需求,例如旋转、倾斜等效果。对于更复杂的需求,可能需要考虑使用其他...

    jxl导出excel文件简单示例

    jxl是一个Java库,它允许开发者读取、写入和修改Excel文件,尤其在处理批量数据时非常方便。在这个示例中,我们将探讨如何使用jxl库来生成Excel文件。 首先,你需要在项目中引入jxl库。如果你使用的是Maven,可以在...

    使用jxl操作Excel

    在Java编程环境中,处理Excel数据是一项常见的任务,而`jxl`库是一个广泛使用的开源库,专门用于读取和写入Microsoft Excel文件。本篇将详细介绍如何使用`jxl`库进行Excel的操作,包括导入、导出、读取以及更新Excel...

    JXL操作EXCEL 数据库导出EXCEL相关文件

    JXL是一个Java库,专门用于读取、写入和修改Excel文件,它为Java开发者提供了一种方便的方式来处理Excel数据,而无需依赖Microsoft Office套件。本篇文章将深入探讨JXL库在操作Excel和数据库导出Excel文件方面的应用...

    jxl模版生成excel

    总的来说,jxl是一个强大的工具,适用于需要在Java应用中生成或处理Excel文件的场景,特别是需要基于模板动态生成复杂报表的情况。通过学习和掌握jxl库,开发者能够高效地处理Excel数据,提升工作效率。

Global site tag (gtag.js) - Google Analytics