最近有一个需求,就是把excel中的内容,解析成Json对象格式的文件输出。
然后就上网找了一波资料,大神们都说用POI来做。但是我看了一下POI的解析过程,但是为了秉着高效的原则,花最少的时间去实现功能。
又让我搜到了easy poi,特此标记。晚点把学习过程记录下来。
Easy POI
官网传送门---> 官网地址
easy poi的理念就是为了让没有接触过POI的开发小伙伴(没错就是你),可以很方便的导入导出Excel
Easy POI提供了很多中导入导出的注解,以及还提供按照模板excel导出
当然,这里博主就只简单的介绍一下@Excel
@Excel中有两个重要的属性
- name : 和excel中的列名一致
- orderNum: 列的排序
@Excel(name="Last Name", orderNum = "0") @JSONField(name = "First Name",ordinal = 0) private String firstName; @Excel(name="First Name", orderNum = "1") @JSONField(name = "Last Name", ordinal = 1) private String lastName; @Excel(name="Email Address", orderNum = "2") @JSONField(name="Email Address", ordinal = 2) private String emailAddress;
要快速的导入导出,还需要用到Easy poi中的两个工具类
ExcelImportUtil和ExcelExportUtil
package cn.afterturn.easypoi.excel; import cn.afterturn.easypoi.excel.entity.ImportParams; import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; import cn.afterturn.easypoi.excel.imports.ExcelImportServer; import cn.afterturn.easypoi.excel.imports.sax.SaxReadExcel; import cn.afterturn.easypoi.excel.imports.sax.parse.ISaxRowRead; import cn.afterturn.easypoi.exception.excel.ExcelImportException; import cn.afterturn.easypoi.handler.inter.IExcelReadRowHanlder; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.List; import org.apache.poi.util.IOUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ExcelImportUtil { private static final Logger LOGGER = LoggerFactory.getLogger(ExcelImportUtil.class); private ExcelImportUtil() { } public static <T> List<T> importExcel(File file, Class<?> pojoClass, ImportParams params) { FileInputStream in = null; List var4; try { in = new FileInputStream(file); var4 = (new ExcelImportServer()).importExcelByIs(in, pojoClass, params).getList(); } catch (ExcelImportException var9) { throw new ExcelImportException(var9.getType(), var9); } catch (Exception var10) { LOGGER.error(var10.getMessage(), var10); throw new ExcelImportException(var10.getMessage(), var10); } finally { IOUtils.closeQuietly(in); } return var4; } public static <T> List<T> importExcel(InputStream inputstream, Class<?> pojoClass, ImportParams params) throws Exception { return (new ExcelImportServer()).importExcelByIs(inputstream, pojoClass, params).getList(); } public static <T> ExcelImportResult<T> importExcelMore(InputStream inputstream, Class<?> pojoClass, ImportParams params) throws Exception { return (new ExcelImportServer()).importExcelByIs(inputstream, pojoClass, params); } public static <T> ExcelImportResult<T> importExcelMore(File file, Class<?> pojoClass, ImportParams params) { FileInputStream in = null; ExcelImportResult var4; try { in = new FileInputStream(file); var4 = (new ExcelImportServer()).importExcelByIs(in, pojoClass, params); } catch (ExcelImportException var9) { throw new ExcelImportException(var9.getType(), var9); } catch (Exception var10) { LOGGER.error(var10.getMessage(), var10); throw new ExcelImportException(var10.getMessage(), var10); } finally { IOUtils.closeQuietly(in); } return var4; } public static <T> List<T> importExcelBySax(InputStream inputstream, Class<?> pojoClass, ImportParams params) { return (new SaxReadExcel()).readExcel(inputstream, pojoClass, params, (ISaxRowRead)null, (IExcelReadRowHanlder)null); } public static void importExcelBySax(InputStream inputstream, Class<?> pojoClass, ImportParams params, IExcelReadRowHanlder hanlder) { (new SaxReadExcel()).readExcel(inputstream, pojoClass, params, (ISaxRowRead)null, hanlder); } public static <T> List<T> importExcelBySax(InputStream inputstream, ISaxRowRead rowRead) { return (new SaxReadExcel()).readExcel(inputstream, (Class)null, (ImportParams)null, rowRead, (IExcelReadRowHanlder)null); } }