最近有一个需求,就是把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);
    }
}
ExcelImportUtil

相关文章:

  • 2021-11-18
  • 2022-12-23
  • 2021-08-08
  • 2022-12-23
  • 2021-10-26
猜你喜欢
  • 2021-08-04
  • 2021-05-08
  • 2021-05-07
  • 2021-05-01
  • 2022-01-23
  • 2022-12-23
  • 2021-07-11
相关资源
相似解决方案