jexcel 读写EXCEL

Jexcel
基于JAVA的依赖于POI的EXCEL读写包装
项目地址: https://github.com/lychie/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
输出结果
资源
示例工程源码下载: jexcel-demo.zip(提取码:6398)






   [ 随笔均原创,转载请注明出处:http://www.blogjava.net/fancydeepin ]


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值