还原Excel内容到 java bean list 的通用方法.

摘要: 以前通常会把java bean list 输出为EXCEL文件,作为报表供客户下载,有时候也需要读入客户准备好的Excel文档,并将这些数据导入到数据库中,或者做其他处理, 一般来说导入 excel 文件到内存中应该比较容易,但jxls这个库提供了另外一种处理方式,通过配置文件配置指定导入的column和对应的pojo类的属性.虽然自己也可以做到,但人家已经实现了,还是很方便的, 唯一郁闷的是 导入的jar包比较多,比较变态.

以前通常会把java bean list 输出为EXCEL文件,作为报表供客户下载,有时候也需要读入客户准备好的Excel文档,并将这些数据导入到数据库中,或者做其他处理, 一般来说导入 excel 文件到内存中应该比较容易,但jxls这个库提供了另外一种处理方式,通过配置文件配置指定导入的column和对应的pojo类的属性.虽然自己也可以做到,但人家已经实现了,还是很方便的, 唯一郁闷的是 导入的jar包比较多,比较变态.

主要用到的工具 jxls: http://jxls.sourceforge.net/



1. 一个公用的处理方法, 将导入的excel文件转为 java bean list:

package com.yihaomen.parseexceltojavabeanlist;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import net.sf.jxls.reader.ReaderBuilder;
import net.sf.jxls.reader.XLSReader;

public class Util {

	public List parseExcelFileToBeans(File xlsFile,
            File jxlsConfigFile)
            throws Exception {
		XLSReader xlsReader = ReaderBuilder.buildFromXML(jxlsConfigFile);
		List result = new ArrayList();
		Map beans = new HashMap();
		beans.put("result", result);
		InputStream inputStream = null;
		try {
			inputStream = new BufferedInputStream(new FileInputStream(xlsFile));
			xlsReader.read(inputStream, beans);			
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			if (inputStream !=null){
				inputStream.close();
			}
		}		
		return result;
		}
}



要转换的java bean 的定义如下:
package com.yihaomen.parseexceltojavabeanlist;

public class Person {

	  private String firstName;
	  private String lastName;
	  private int age;

	  public Person() {
	  }
	  public String getFirstName() {
	    return firstName;
	  }
	  public void setFirstName(String firstName) {
	    this.firstName = firstName;
	  }
	  public String getLastName() {
	    return lastName;
	  }
	  public void setLastName(String lastName) {
	    this.lastName = lastName;
	  }
	  public int getAge() {
	    return age;
	  }
	  public void setAge(int age) {
	    this.age = age;
	  }
	}


重点是配置文件的处理,看 excel 文件 与 java bean之间的 对应关系:

  
    
person.firstName person.lastName person.age


测试代码如下:
package com.yihaomen.parseexceltojavabeanlist;

import java.io.File;
import java.util.List;

public class TestApp {
	
	public static void main(String[] args) throws Exception {
		String path = System.getProperty("user.dir");
		Util util = new Util();
		String excelFilePath = path + File.separator + "personData.xls";
		String configFilePath = path + File.separator + "personConfig.xml";
		List persons = util.parseExcelFileToBeans(new File(excelFilePath),
                new File(configFilePath));
		
		for(Person p : persons){
			System.out.println(p.getFirstName());
		}
		
	}

}


Excel 文件内容如下:
FirstName 	LastName	          Age
Joe               	Bloggs	          25
John	                Doe	                  30


上一篇: 发布一个Django开发的公司网站源码,可以作为Django 例子学习
下一篇: python,Django做淘宝客登录参考代码
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号