当前位置:  软件>java软件

快捷方便的Excel导入导出工具 Easy-Xls

    来源:    发布时间:2015-01-20

    本文导语:  EasyXls 项目中包含一个简单的xml生成向导,使用该项导时,需要在项目中创建main方法并调用如下方法: 有一些属性只在写入到xls时有效,这些会标记【写】,有些只在读取xls时使用的标记【读】,通用的不做标记。 整...

EasyXls

使用EasyXls可以使你很方便的操作Excel。本项目目的是解决简单的(不带任何样式)xls文件的导入导出。  

处理XML时由于使用了JAXB,所以需要使用jdk1.6u14以上版本。  JAXB处理中文xml时容易出现乱码,因此这里限制XML为GBK编码,在Windwos中的保存格式为ANSI即可。  

EasyXls特点
  • 支持xls转换为List对象

  • 支持xls转换为List对象

  • 支持List转换为xls

  • 支持List转换为xls

  • 支持xml配置形式

  • 支持java编码创建Config配置

  • xml配置向导

    项目中包含一个简单的xml生成向导,使用该项导时,需要在项目中创建main方法并调用如下方法:

    EasyXls.openGenerater(); 
    支持的列类型
    • int
    • long
    • float
    • double
    • java.lang.Integer
    • java.lang.Long
    • java.lang.Float
    • java.lang.Double
    • java.util.Date
    • java.math.BigDecimal
    项目依赖
      net.sourceforge.jexcelapi
      jxl
      2.6.12
    


    配置项说明

    有一些属性只在写入到xls时有效,这些会标记【写】,有些只在读取xls时使用的标记【读】,通用的不做标记。

    整体配置
    • cache:使用xml配置时可以选择是否启用缓存,启用缓存后不会重复解析xml配置文件,这样会提高反复使用的效率。但是如果修改了xml配置,新的配置不会生效。

    • sheet:sheet标签的名字【写】

    • class:excel对应的POJO类或Map

    • sheetNum:读取第几个sheet页【读】

    • startRow:从第几行开始读取【读】

    • maxRow:最大读取行,超出行数的不进行读取【读】

    列Column配置
    • name:对应的java字段名

    • header:对应的excel标题名【写】

    • type:对应列的类型,不设置时,如果使用的POJO,会自动匹配字段类型。如果使用的Map,使用xls自身的格式【读】

    • width:对应列的宽度(单位:像素)【写】

    • key:必须包含值的列,如果该列为空,就会停止往下读取。主要防止读取空白行,只有第一个设置key=true的列有效【读】

    示例

    以下代码均来自测试代码(test目录下)

    部分xml:

    
      false
      一次性费用
      po.Charges
      0
      1
      
        
          year
          年度
          java.lang.Integer
          50
        
        
          ownersname
          户主姓名
          java.lang.String
          120
        
      
    


    使用xml配置读取xls:

    @Test
    public void testMap() {
        try {
            List list = EasyXls.xls2List(
                    Xls2ListTest.class.getResource("/ChargesMap.xml").getPath(),
                    new File(Xls2ListTest.class.getResource("2.xls").getPath()));
            System.out.println(list);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    使用java代码创建Config并读取xls:

    @Test
    public void testConfig() {
        try {
            //创建一个配置
            ExcelConfig config = new ExcelConfig.Builder(Charges.class)
                    .sheetNum(0)
                    .startRow(1)
                    .key("name")
                    .addColumn("year", "communityid", "roomno", 
                            "ownersid", "ownersname", "property").build();
            List list = EasyXls.xls2List(config, 
                            Xls2ListTest.class.getResourceAsStream("2.xls"));
            for (int i = 0; i < list.size(); i++) {
                System.out.println(((Charges) list.get(i)).getOwnersname());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    这里对列的处理很简单,excel文件的列和column的列一一对应即可。


    使用xml配置读取,使用Config方式写入到新的excel文件:

    @Test
    public void testMap2() {
        InputStream is = Xls2ListTest.class.getResourceAsStream("2.xls");
        try {
            String xmlPath = Xls2ListTest.class.getResource("/ChargesMap.xml").getPath();
            List list = EasyXls.xls2List(xmlPath, is);
    
            Map map = new HashMap();
            map.put("year", 2013);
            map.put("ownersname", "测试户主");
            list.add(map);
    
            EasyXls.list2Xls(list, xmlPath, "d:/", "testMap.xls");
    
            ExcelConfig config = new ExcelConfig.Builder(Charges.class)
                    .sheetNum(0)
                    .startRow(1)
                    .separater(",")
                    .key("name")
                    .addColumn("year,年度", "communityid,小区ID",
                            "roomno,房号", "ownersid,户主ID",
                            "ownersname,户主姓名", "property,物业费").build();
            EasyXls.list2Xls(config, list, "d:/", "testMap2.xls");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    这里为了调用方便,先使用.separater(",")方法设定分隔符(默认为英文逗号),然后在addColumn方法中使用如"year,年度"这种方式赋值。

    这种赋值方式最多支持4个参数,分别对应name,header,width,type,如:

    "year,年度,200,java.lang.Integer"

    使用POJO类时不需要写type,当使用Map时,可以使用type指定类型。



        
     
     

    您可能感兴趣的文章:

     
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在Redhat linux中怎样方便快捷的得到操作系统帮助?
  • 用什么工具编写JSP,可以象用InterDev编写ASP一样方便快捷?
  • 更方便快捷的外部操作数据库的方法介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3