还原Excel内容到 java bean list 的通用方法.
By:Roy.LiuLast updated:2014-07-02
以前通常会把java bean list 输出为EXCEL文件,作为报表供客户下载,有时候也需要读入客户准备好的Excel文档,并将这些数据导入到数据库中,或者做其他处理, 一般来说导入 excel 文件到内存中应该比较容易,但jxls这个库提供了另外一种处理方式,通过配置文件配置指定导入的column和对应的pojo类的属性.虽然自己也可以做到,但人家已经实现了,还是很方便的, 唯一郁闷的是 导入的jar包比较多,比较变态.
主要用到的工具 jxls: http://jxls.sourceforge.net/
1. 一个公用的处理方法, 将导入的excel文件转为 java bean list:
要转换的java bean 的定义如下:
重点是配置文件的处理,看 excel 文件 与 java bean之间的 对应关系:
测试代码如下:
Excel 文件内容如下:
主要用到的工具 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
From:一号门
Previous:发布一个Django开发的公司网站源码,可以作为Django 例子学习
COMMENTS