easyexcel异常类_Excel解析easyexcel工具类

/**

* @version V1.0

* @author: lin_shen

* @date: 2018/9/26

* @Description: TODO

*/

public class EasyExcelUtil {

/**

* StringList 解析监听器

*/

private static class StringExcelListener extends AnalysisEventListener {

/**

* 自定义用于暂时存储data

* 可以通过实例获取该值

*/

private List> datas = new ArrayList<>();

/**

* 每解析一行都会回调invoke()方法

* @param object

* @param context

*/

@Override

public void invoke(Object object, AnalysisContext context) {

List stringList= (List) object;

//数据存储到list,供批量处理,或后续自己业务逻辑处理。

datas.add(stringList);

//根据自己业务做处理

}

@Override

public void doAfterAllAnalysed(AnalysisContext context) {

//解析结束销毁不用的资源

//注意不要调用datas.clear(),否则getDatas为null

}

public List> getDatas() {

return datas;

}

public void setDatas(List> datas) {

this.datas = datas;

}

}

/**

* 使用 StringList 来读取Excel

* @param inputStream Excel的输入流

* @param excelTypeEnum Excel的格式(XLS或XLSX)

* @return 返回 StringList 的列表

*/

public static List> readExcelWithStringList(InputStream inputStream,ExcelTypeEnum excelTypeEnum) {

StringExcelListener listener = new StringExcelListener();

ExcelReader excelReader = new ExcelReader(inputStream, excelTypeEnum, null, listener);

excelReader.read();

return listener.getDatas();

}

/**

* 使用 StringList 来写入Excel

* @param outputStream Excel的输出流

* @param data 要写入的以StringList为单位的数据

* @param table 配置Excel的表的属性

* @param excelTypeEnum Excel的格式(XLS或XLSX)

*/

public static void writeExcelWithStringList(OutputStream outputStream, List> data, Table table,ExcelTypeEnum excelTypeEnum) {

//这里指定不需要表头,因为String通常表头已被包含在data里

ExcelWriter writer = new ExcelWriter(outputStream, excelTypeEnum,false);

//写第一个sheet, sheet1 数据全是List 无模型映射关系,无表头

Sheet sheet1 = new Sheet(0, 0);

writer.write0(data, sheet1,table);

writer.finish();

}

/**

* 模型 解析监听器

*/

private static class ModelExcelListener extends AnalysisEventListener {

private List datas = new ArrayList<>();

@Override

public void invoke(Object object, AnalysisContext context) {

datas.add(object);

}

@Override

public void doAfterAllAnalysed(AnalysisContext context) {

}

public List getDatas() {

return datas;

}

public void setDatas(List datas) {

this.datas = datas;

}

}

/**

* 使用 模型 来读取Excel

* @param inputStream Excel的输入流

* @param clazz 模型的类

* @param excelTypeEnum Excel的格式(XLS或XLSX)

* @return 返回 模型 的列表(为object列表,需强转)

*/

public static List readExcelWithModel(InputStream inputStream, Class extends BaseRowModel> clazz,ExcelTypeEnum excelTypeEnum) {

// 解析每行结果在listener中处理

ModelExcelListener listener = new ModelExcelListener();

ExcelReader excelReader = new ExcelReader(inputStream, excelTypeEnum, null, listener);

//默认只有一列表头

excelReader.read(new Sheet(1,1,clazz));

return listener.getDatas();

}

/**

* 使用 模型 来写入Excel

* @param outputStream Excel的输出流

* @param data 要写入的以 模型 为单位的数据

* @param table 配置Excel的表的属性

* @param clazz 模型的类

* @param excelTypeEnum Excel的格式(XLS或XLSX)

*/

public static void writeExcelWithModel(OutputStream outputStream, List extends BaseRowModel> data, Table table,Class extends BaseRowModel> clazz,ExcelTypeEnum excelTypeEnum) {

//这里指定需要表头,因为model通常包含表头信息

ExcelWriter writer = new ExcelWriter(outputStream, excelTypeEnum,true);

//写第一个sheet, sheet1 数据全是List 无模型映射关系

Sheet sheet1 = new Sheet(1,0, clazz);

writer.write(data, sheet1,table);

writer.finish();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值