[Java]EasyXls - 操作excel很简单

由于经常操作excel,很想避免每次读取、写入excel时繁琐的switch判断,然后转换类型,从对象取出或存入对象,所以就有了EasyXls,在我博客有我之前写过的两篇博客,分别写的是通用的读取excel和写入excel,当时整的不是很方便,所以我后来需要用到时,我重新写了读取和写入。


项目地址:https://code.google.com/p/easy-xls/

SVN地址:svn checkout http://easy-xls.googlecode.com/svn/trunk/ easy-xls-read-only


EasyXls

使你更方便的操作Excel,主要提供两个方法,读取excel到对象,导出对象到excel。 使用xml配置文件和Object对象进行操作。 支持多级继承,读取时需要相应的setter方法,导出时需要相应的getter方法。

支持的列类型

  • int,
  • long,
  • float,
  • double,
  • java.lang.Integer,
  • java.lang.Long,
  • java.lang.Float,
  • java.lang.Double,
  • java.util.Date,
  • java.math.BigDecimal

项目依赖

  • jxl.jar:用来操作excel文件
  • xstream-1.4.3.jar:用来读取xml配置信息
  • xmlpull-1.1.3.1.jar:xstream依赖
  • xpp3_min-1.1.4c.jar:xstream依赖

EasyXls.java

主要的两个方法都集成在类EasyXls中。

/**
 * 
 * excel,对导入导出进行封装
 * @author liuzh
 *
 */
public class EasyXls {
        /**
         * 读取excel到list
         * @param xmlPath
         * @param xlsFile
         * @return
         * @throws Exception
         */
        public static List<?> xls2List(String xmlPath,File xlsFile) throws Exception{
                return ImpXls2ListObj.impXls2ListObj(xmlPath,xlsFile);
        }
        
        /**
         * 写入list到xls文件
         * @param list
         * @param xmlPath
         * @param filePath
         * @param fileName
         * @return
         * @throws Exception
         */
        public static boolean list2Xls(List<Object> list,String xmlPath,String filePath,String fileName) throws Exception{
                return ExpListObj2Xls.expListObjFile(list, xmlPath, filePath, fileName);
        }
}

XML配置文件

<?xml version="1.0" encoding="UTF-8"?>
<excel>
        <!-- 
                必填项为:name,header,其他全部选填
                
                title:excel表格中第一行合并单元格居中显示的内容
                description:第二行显示的说明
                author:xml作者,不会输出
                class:类路径
                sheet:导出excel的sheet名(从0开始计算)
                startRow:从第几行开始读取(从0开始计算)
                columns:导出列的信息
                        column:一个列
                                name:列对应Object中的字段名,必须有标准的get方法
                                header:导出excel中显示的标题
                                width:列宽(单位像素)
                                type:列的类型,读取时需要用到
         -->
        <title>人员信息导出</title>
        <description>这里是描述信息</description>
        <!-- 读取配置 开始 -->
        <class>com.isea.easyxls.test.TestObj</class>
        <sheetNum>0</sheetNum>
        <startRow>3</startRow>
        <!-- 读取配置 结束 -->
        <author>isea533</author>
        <sheet>人员信息</sheet>
        <columns>
                <column>
                        <name>name</name>
                        <type>java.lang.String</type>
                        <header>姓名</header>
                        <width>200</width>
                </column>
                <column>
                        <name>country</name>
                        <type>java.lang.String</type>
                        <header>国籍</header>
                        <width>50</width>
                </column>
                <column>
                        <name>birthday</name>
                        <type>java.util.Date</type>
                        <header>生日</header>
                        <width>160</width>
                </column>
                <column>
                        <name>age</name>
                        <type>int</type>
                        <header>年龄</header>
                </column>
                <column>
                        <name>str4</name>
                        <type>java.lang.String</type>
                        <header>字符串4</header>
                </column>
                <column>
                        <name>str2</name>
                        <type>java.lang.String</type>
                        <header>字符串2</header>
                </column>
                <column>
                        <name>str3</name>
                        <type>java.lang.String</type>
                        <header>字符串3</header>
                </column>
                <column>
                        <name>str1</name>
                        <type>java.lang.String</type>
                        <header>字符串1</header>
                </column>
                <column>
                        <name>str5</name>
                        <type>java.lang.String</type>
                        <header>字符串5</header>
                </column>
        </columns>
</excel>

读取测试

public  static void ReadTest() throws Exception{
                String xmlPath = "E:\\TestObj.xml";
                String filePath = "E:/";
                String fileName = "text";
                File file = new File(filePath+fileName+".xls");
                List<TestObj> list = (List<TestObj>) ImpXls2ListObj.impXls2ListObj(xmlPath,file);
                for(TestObj testObj:list){
                        System.out.println(testObj.getName()+","+testObj.getAge()+","+testObj.getCountry());
                }
        }

更多信息请查看源码。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

isea533

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值