Jexcel
示例工程结构
pom.xml
<repositories>
<repository>
<id>lychie-maven-repo</id>
<url>https://raw.github.com/lychie/maven-repo/master/releases</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.lychie</groupId>
<artifactId>jexcel</artifactId>
<version>1.0.1</version>
</dependency>
</dependencies>
写出EXCEL
package org.lychie.jexcel.demo;
import java.io.File;
import java.util.List;
import java.util.ArrayList;
import org.lychie.jexcel.WritableExcel;
import org.lychie.jexcel.demo.model.Employee;
/**
* 写出对象到EXCEL文档
*
* @date 2015-01-21
* @author Lychie Fan
*/
public class WriteExcel {
public static void main(String[] args) {
// 创建一个可写的EXCEL对象
WritableExcel excel = new WritableExcel(getData());
// 设置POJO属性与EXCEL单元格的映射关系
excel.setMapper("id", "编号");
excel.setMapper("name", "姓名");
excel.setMapper("hiredate", "入职日期");
excel.setMapper("salary", "薪资");
// 将对象内容写出到EXCEL文档
excel.write(new File("src/main/resources/employee.xlsx"));
}
private static List<Employee> getData() {
List<Employee> list = new ArrayList<Employee>();
list.add(new Employee("杨忠杰"));
list.add(new Employee("叶水燕"));
list.add(new Employee("杨晓婷"));
list.add(new Employee("叶国珠"));
list.add(new Employee("何国群"));
return list;
}
}
结果图
设置写出的EXCEL样式
public class WriteExcel {
public static void main(String[] args) {
// 创建一个可写的EXCEL对象
WritableExcel excel = new WritableExcel(getData());
// 设置POJO属性与EXCEL单元格的映射关系
excel.setMapper("id", "编号");
excel.setMapper("name", "姓名");
excel.setMapper("hiredate", "入职日期");
excel.setMapper("salary", "薪资");
// 单元格值格式对象
ValueFormat format = excel.getValueFormat();
// 设置薪资显示格式为货币格式
format.set("salary", ValueFormat.CURRENCY_FORMAT);
// 主体对象
Body body = excel.getBody();
// 设置单元格内容水平方向居中
body.setHorizontalAlignment(Body.HORIZONTAL_CENTER);
// 将对象内容写出到EXCEL文档
excel.write(new File("src/main/resources/employee.xlsx"));
}
}
结果图
读取EXCEL文档
package org.lychie.jexcel.demo;
import java.util.List;
import org.lychie.jutil.IOUtil;
import org.lychie.jutil.Printer;
import org.lychie.jexcel.ReadableExcel;
import org.lychie.jexcel.demo.model.Person;
/**
* 读取EXCEL文档
*
* @date 2015-01-21
* @author Lychie Fan
*/
public class ReadExcel {
public static void main(String[] args) {
// 创建一个可读的EXCEL对象
ReadableExcel excel = new ReadableExcel(Person.class);
// 设置POJO属性与EXCEL单元格的映射关系
excel.setMapper("id", "编号");
excel.setMapper("age", "年龄");
excel.setMapper("sex", "性别");
excel.setMapper("name", "姓名");
excel.setMapper("date", "生日");
// 载入EXCEL文档
excel.load(IOUtil.getResourceAsStream("persons.xlsx"));
// 解析EXCEL文档成集合
List<Person> list = excel.toList();
// 打印输出集合的内容
Printer.print(list);
}
}
persons.xlsx
输出结果
读取EXCEL文档,校验文档内容合法性
public class ReadExcel {
public static void main(String[] args) {
// 创建一个可读的EXCEL对象
ReadableExcel excel = new ReadableExcel(Person.class);
// 设置POJO属性与EXCEL单元格的映射关系
excel.setMapper("id", "编号");
excel.setMapper("age", "年龄");
excel.setMapper("sex", "性别");
excel.setMapper("name", "姓名");
excel.setMapper("date", "生日");
// 载入EXCEL文档
excel.load(IOUtil.getResourceAsStream("persons.xlsx"));
try {
// 校验EXCEL文档内容的合法性
excel.validate(new BasicValidation());
} catch (ValidationCastException e) {
e.printStackTrace();
return ;
}
// 解析EXCEL文档成集合
List<Person> list = excel.toList();
// 打印输出集合的内容
Printer.print(list);
}
}
persons.xlsx
输出结果
读取EXCEL文档,自定义校验规则
public class ReadExcel {
public static void main(String[] args) {
// 创建一个可读的EXCEL对象
ReadableExcel excel = new ReadableExcel(Person.class);
// 设置POJO属性与EXCEL单元格的映射关系
excel.setMapper("id", "编号");
excel.setMapper("age", "年龄");
excel.setMapper("sex", "性别");
excel.setMapper("name", "姓名");
excel.setMapper("date", "生日");
// 载入EXCEL文档
excel.load(IOUtil.getResourceAsStream("persons.xlsx"));
try {
// 校验EXCEL文档内容的合法性
excel.validate(new MyValidation());
} catch (ValidationCastException e) {
e.printStackTrace();
return ;
}
// 解析EXCEL文档成集合
List<Person> list = excel.toList();
// 打印输出集合的内容
Printer.print(list);
}
private static class MyValidation extends BasicValidation {
@Override
public boolean validate(Class<?> type, String name, String value) {
// 自定义校验规则, 在 super.validate 之前校验, 以达到短路父校验规则的目的
if (name.equals("age")) {
Integer age = Integer.valueOf(value);
if (age >= 18 && age < 55) {
return true;
} else {
setCause("年龄不在 [18, 55) 区间");
return false;
}
}
// 最后调父类校验方法
return super.validate(type, name, value);
}
}
}
persons.xlsx
输出结果
资源
posted on 2015-01-22 09:38
fancydeepin 阅读(5010)
评论(2) 编辑 收藏