JXLS是一个简单易用的一个用于生成和读入Excel的工具,有兴趣的朋友可以到Jxls的官网上面下载最新版本的Jxls,目前Jxls最新的版本是0.9.5,下载的Zip包里面有一个Doc和Example,不过,官网所提供的东西太过简单,如果,需要详细了解Jxls的功能和使用方法的话,可以仔细研究其源代码。
将Jxls源代码导入到Eclipse的环境中就可以查看和分析其源代码了,导入Eclipse的方法是:
1)将下载的压缩包里面的Src目录下面的jxls-core和jxls-reader两个文件夹拷贝到一个目录下面(也可以不用拷贝)
2)在DOS下面进入jxls-core目录下面,输入命令:mvn -eclipse:eclipse。jxls-reader的生成方式也是一样的
3)打开Eclipse,将生成的两个项目导入
使用jxls的时候其实就使用两个类就够了:XLSTransformer和Util,至少在我目前的使用过程中只使用到这么两个类。
jxls的使用方法:
1)将jxls的jar文件放到我们的程序目录下面,如果,使用Maven的话,直接在Project的pom.xml里面配置依赖就可以了
2)根据需要生成的Excel文件或者Report的格式,设置一个jxls的Template文件,Template其实就是一个特殊的一些Excel文件,里面包含了一些jxls的Tag标签。
jxls的Tag其实有点想jstl标签库的使用方式,在取出一个对象的值的时候可以利用下面这样的Tag来将值输出:${object1.property1};如果需要将一个Map输出到Excel的时候定义方式如下:${map.get('property1')};
3)声明一个XLSTransformer对象,生成方式就是使用new操作符
XLSTransformer transformer = new XLSTransformer();
4)得到Template的FIle:
String xlsTemplateFileName = this.getClass().getClassLoader().getResource("template.xls");
5)利用XLSTransformer的类的方法生成Excel文件
String xlsFileName = "c:"+File.separator+"resule.xls";
Map beans = new HashMap();
beans.put("newBeans1","new beans1");
beans.put("newBeans2","new beans2");
transformer.transformXLS(xlsTemplateFileName , beans, xlsFileName);
XLSTransformer类的transformXLS方法的定义如下:
public void transformXLS(String srcFilePath, Map beanParams, String destFilePath) throws ParsePropertyException, IO
Exception其中:
srcFilePath:是Template文件的全文件名(包含路径)
beanParams:需要传入Excel里面的一个Map,jxls根据Template里面的定义和Map里面的对象对Template进行解析,将Map里面的对象值填入到Excel文件中
destFilePath:需要生成的Excel文件的全文件名(包含路径)
注:jxls虽然提供了Example,但是,都过于简单,如果想详细了解jxls,可以仔细研究jxls-core,其实没有必要查看其全部代码,如果只是想了解其具体操作,可以详细查看类XLSTransformerTest,即XLSTransformer的测试代码。
项目中所用到的jar,可以到[url]http://www.findjar.com/index.x[/url]下载
ExcelUtil类源码:
[java] view plaincopy
package util;
import java.io.IOException;
import java.net.URL;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.jxls.exception.ParsePropertyException;
import net.sf.jxls.transformer.XLSTransformer;
/**
* Excel生成类.
*/
public class ExcelUtil {
/**
* 根据模板生成Excel文件.
* @param templateFileName 模板文件.
* @param list 模板中存放的数据.
* @param resultFileName 生成的文件.
*/
public void createExcel(String templateFileName, List<?> list, String resultFileName){
//创建XLSTransformer对象
XLSTransformer transformer = new XLSTransformer();
//获取java项目编译后根路径
URL url = this.getClass().getClassLoader().getResource("");
//得到模板文件路径
String srcFilePath = url.getPath() + templateFileName;
Map<String,Object> beanParams = new HashMap<String,Object>();
beanParams.put("list", list);
String destFilePath = url.getPath() + resultFileName;
try {
//生成Excel文件
transformer.transformXLS(srcFilePath, beanParams, destFilePath);
} catch (ParsePropertyException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Test类源码:
package test;
import java.util.ArrayList;
import java.util.List;
import po.Fruit;
import util.ExcelUtil;
/**
* 测试类.
*/
public class Test {
public static void main(String[] args) {
List<Fruit> list = new ArrayList<Fruit>();
list.add(new Fruit("苹果",2.01f));
list.add(new Fruit("桔子",2.05f));
String templateFileName = "template/template.xls";
String resultFileName = "result/fruit.xls";
new ExcelUtil().createExcel(templateFileName,list,resultFileName);
}
}
注意:如果你是用的office 2007生成的excel模板,要另存为97-2003版本的。
Fruit类源码:
package po;
/**
* 水果.
*/
public class Fruit {
/**
* 水果名称.
*/
private String name;
/**
* 水果价格.
*/
private float price;
public Fruit() {
super();
}
public Fruit(String name, float price) {
super();
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
}
标签:String,import,Excel,jxls,JXLS,使用,new,public From: https://blog.51cto.com/u_3871599/6338592