由于经常操作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
使你更方便的操作Excel,主要提供两个方法,读取excel到对象,导出对象到excel。 使用xml配置文件和Object对象进行操作。 支持多级继承,读取时需要相应的setter方法,导出时需要相应的getter方法。
主要的两个方法都集成在类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 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()); } }
更多信息请查看源码。