0
点赞
收藏
分享

微信扫一扫

[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


使你更方便的操作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());
}
}

更多信息请查看源码。



举报

相关推荐

0 条评论