项目中有一些excel的导入、导出工作,为了方便使用,对POI做了点简单的封装。我们的要求比较低,封装得也很简单。最近有闲,做了下整理:
基础包版本说明:
JDK 1.6
POI 3.17
首先上个使用样例:
public static void main(String[] args) throws Exception {
ExcelUtil.parse("C:\\Users\\aires\\Desktop\\附件1:课程清单.xlsx").iterate(new SimpleRowResolver() {
@Override
public void resolve(int rowNum, Object[]val) {
//控制台输出第一行的内容
System.out.println(Arrays.toString(val));
}
});
}
功能说明:针对excel文件或输入流,按行或者单元格解析处理,提供简单的通用单元格数据获取方法(ExcelUtil.val(Cell cell):数字类单元格返回Double, 日期返回Date, 公式返回计算后的结果,其它返回String)
两个接口:
/**
*
* @author aires
* 2016-9-20 下午5:57:08
* 描述:行解析器
*/
public interface RowResolver {
public void resolve(int rowNum, Row row);
}
/**
*
* @author aires
* 2016-9-20 下午5:57:17
* 描述:单元格解析器
*/
public interface CellResolver {
public void resolve(int rowNum, int colNum, Cell cell);
}
针对上面接口提供了两个适配器(直接获取了单元格的数据供处理):
public abstract class SimpleRowResolver implements RowResolver
...
protected abstract void resolve(int rowNum, Object[]values);
...
public abstract class SimpleCellResolver implements CellResolver
...
protected abstract void resolve(int rowNum, int colNum, Object value)
...
内容比较简单,其它的就偷个懒,贴点内容:
获取对象
Excel excel = ExcelUtil.parse(excelFile)/ExcelUtil.newExcel(sheetName);//或者调用构造方法,重载方法,支持文件或流
遍历 excel.iterate/iterateAll
遍历当前sheet
do { excel.iterate... }while(excel.nextSheet())
遍历所有sheet
excel.iterateAll
编辑
创建新sheet页
excel.newSheet(sheetName);
设置宽度
excel.setWidths
写数据
excel.write/writeRow
合并单元格
excel.merge
保存
excel.save
包地址:http://download.csdn.net/download/luogui551/10169053
源码github:https://github.com/luogui551/excel.git