您的位置:首页 > 编程语言 > Java开发

[Java]EasyXls - 操作excel很简单

2013-04-11 20:23 316 查看
由于经常操作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());
                }
        }


更多信息请查看源码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: