• 九江市委书记林彬杨主持召开市委常委会议 对市县机构改革提了这些要求 2019-04-10
  • 2018款奔驰E级购车指南 中低配是主力 2019-04-07
  • 264路胡乱发车,投诉一月依然如故。 2019-04-07
  • 张太雷烈士大学毕业证书回到故乡常州 2019-04-06
  • 日照市今年计划投资158亿 修建幸福公路助发展 2019-04-06
  • 吴青峰新歌口碑持续攀升 获赞“这很吴青峰”青峰 新歌 2019-04-03
  • 《国家人文历史》2018年第4期封面及目录 2019-04-03
  • 统计局:5月份经济运行主要指标呈现五大特点 2019-03-27
  • 罗品禧的专栏作者中国国家地理网 2019-03-27
  • 习近平同上海合作组织成员国领导人共同会见记者并讲话 2019-03-27
  • 陈扬勇谈“党的领导是中国特色社会主义最本质的特征” 2019-03-20
  • 解读习近平八一讲话:铭记辉煌历史 推进强军事业 2019-03-20
  • 发挥自身优势 奋力走在前列——习近平总书记在山东考察回访记 2019-03-19
  • 明年起全面供应国六标准汽柴油 2019-03-19
  • 异类非人思维。如一尼安德特人从2万年前发出的声音。 2019-03-16
  • 随笔-126  评论-247  文章-5  trackbacks-0
    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)





      
    posted on 2015-01-22 09:38 fancydeepin 阅读(4423) 评论(2)  编辑  收藏

    评论:
    # re: jexcel 读写EXCEL 2015-01-22 22:36 | 京山游侠
    mark  回复  更多评论
      
    # re: jexcel 读写EXCEL 2015-02-04 20:19 | 小学徒V
    吊炸天  回复  更多评论
      

    只有注册用户登录后才能发表评论。


    网站导航:
     
  • 九江市委书记林彬杨主持召开市委常委会议 对市县机构改革提了这些要求 2019-04-10
  • 2018款奔驰E级购车指南 中低配是主力 2019-04-07
  • 264路胡乱发车,投诉一月依然如故。 2019-04-07
  • 张太雷烈士大学毕业证书回到故乡常州 2019-04-06
  • 日照市今年计划投资158亿 修建幸福公路助发展 2019-04-06
  • 吴青峰新歌口碑持续攀升 获赞“这很吴青峰”青峰 新歌 2019-04-03
  • 《国家人文历史》2018年第4期封面及目录 2019-04-03
  • 统计局:5月份经济运行主要指标呈现五大特点 2019-03-27
  • 罗品禧的专栏作者中国国家地理网 2019-03-27
  • 习近平同上海合作组织成员国领导人共同会见记者并讲话 2019-03-27
  • 陈扬勇谈“党的领导是中国特色社会主义最本质的特征” 2019-03-20
  • 解读习近平八一讲话:铭记辉煌历史 推进强军事业 2019-03-20
  • 发挥自身优势 奋力走在前列——习近平总书记在山东考察回访记 2019-03-19
  • 明年起全面供应国六标准汽柴油 2019-03-19
  • 异类非人思维。如一尼安德特人从2万年前发出的声音。 2019-03-16
  • 中国体育彩票大乐透 赌博网站 香港六合彩开奖历史记录 北京pk10七码全年可用 重庆时时彩官网 你是如何购买nba篮彩的 有好多美女玩北京pk10 体彩p3开机号 2012双色球基本走势图 北京赛车pk拾计算公式 中国体彩网鲁德权 重庆时时彩 四川时时彩开奖结果查询结果 北京赛车彩票开奖网站 排列五走势图彩票2元网 排列5走势图带连线综合