SpringBoot读取上传Excel的数据(3)

SpringBoot读取上传Excel的数据(3)

ExcelUtil(hutool工具的简单使用)

public class ExcelUtil extends Object

Excel工具类,不建议直接使用index直接操作sheet,在wps/excel中sheet显示顺序与index无关,还有隐藏sheet

修饰符和类型方法和说明
static intcolNameToIndex(String colName)根据表元的列名转换为列号
static ExcelWritergetBigWriter()获得BigExcelWriter,默认写出到第一个sheet 不传入写出的Excel文件路径,只能调用ExcelWriter#flush(OutputStream)方法写出到流 若写出到文件,还需调用ExcelWriter.setDestFile(File)方法自定义写出的文件,然后调用ExcelWriter.flush()方法写出到文件
static BigExcelWritergetBigWriter(File destFile)获得BigExcelWriter,默认写出到第一个sheet,名字为sheet1
static BigExcelWritergetBigWriter(File destFile, String sheetName)获得BigExcelWriter
static ExcelWritergetBigWriter(int rowAccessWindowSize)获得BigExcelWriter,默认写出到第一个sheet 不传入写出的Excel文件路径,只能调用ExcelWriter#flush(OutputStream)方法写出到流 若写出到文件,还需调用ExcelWriter.setDestFile(File)方法自定义写出的文件,然后调用ExcelWriter.flush()方法写出到文件
static BigExcelWritergetBigWriter(String destFilePath)获得BigExcelWriter,默认写出到第一个sheet
static BigExcelWritergetBigWriter(String destFilePath, String sheetName)获得BigExcelWriter
static ExcelReadergetReader(File bookFile)获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容 默认调用第一个sheet
static ExcelReadergetReader(File bookFile, int sheetIndex)获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容
static ExcelReadergetReader(File bookFile, String sheetName)获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容
static ExcelReadergetReader(InputStream bookStream)获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容 默认调用第一个sheet,读取结束自动关闭流
static ExcelReadergetReader(InputStream bookStream, boolean closeAfterRead)获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容 默认调用第一个sheet
static ExcelReadergetReader(InputStream bookStream, int sheetIndex)获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容 读取结束自动关闭流
static ExcelReadergetReader(InputStream bookStream, int sheetIndex, boolean closeAfterRead)荒废的。 使用完毕无论是否closeAfterRead,poi会关闭流,此参数无意义。
static ExcelReadergetReader(InputStream bookStream, String sheetName)获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容 读取结束自动关闭流
static ExcelReadergetReader(InputStream bookStream, String sheetName, boolean closeAfterRead)荒废的。 使用完毕无论是否closeAfterRead,poi会关闭流,此参数无意义。
static ExcelReadergetReader(String bookFilePath)获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容 默认调用第一个sheet
static ExcelReadergetReader(String bookFilePath, int sheetIndex)获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容
static ExcelWritergetWriter()获得ExcelWriter,默认写出到第一个sheet 不传入写出的Excel文件路径,只能调用ExcelWriter#flush(OutputStream)方法写出到流 若写出到文件,还需调用ExcelWriter.setDestFile(File)方法自定义写出的文件,然后调用ExcelWriter.flush()方法写出到文件
static ExcelWritergetWriter(boolean isXlsx)获得ExcelWriter,默认写出到第一个sheet 不传入写出的Excel文件路径,只能调用ExcelWriter#flush(OutputStream)方法写出到流 若写出到文件,还需调用ExcelWriter.setDestFile(File)方法自定义写出的文件,然后调用ExcelWriter.flush()方法写出到文件
static ExcelWritergetWriter(File destFile)获得ExcelWriter,默认写出到第一个sheet,名字为sheet1
static ExcelWritergetWriter(File destFile, String sheetName)获得ExcelWriter
static ExcelWritergetWriter(String destFilePath)获得ExcelWriter,默认写出到第一个sheet
static ExcelWritergetWriter(String destFilePath, String sheetName)获得ExcelWriter
static ExcelWritergetWriterWithSheet(String sheetName)获得ExcelWriter,默认写出到第一个sheet
static StringindexToColName(int index)将Sheet列号变为列名
static Excel03SaxReaderread03BySax(File file, int sheetIndex, RowHandler rowHandler)荒废的。 请使用 readBySax(File, int, RowHandler)
static Excel03SaxReaderread03BySax(InputStream in, int sheetIndex, RowHandler rowHandler)荒废的。 请使用 readBySax(InputStream, int, RowHandler)
static Excel03SaxReaderread03BySax(String path, int sheetIndex, RowHandler rowHandler)荒废的。 请使用 readBySax(String, int, RowHandler)
static Excel07SaxReaderread07BySax(File file, int rid, RowHandler rowHandler)荒废的。 请使用 readBySax(File, int, RowHandler)
static Excel07SaxReaderread07BySax(InputStream in, int rid, RowHandler rowHandler)荒废的。 请使用 readBySax(InputStream, int, RowHandler)
static Excel07SaxReaderread07BySax(String path, int rid, RowHandler rowHandler)荒废的。 请使用 readBySax(String, int, RowHandler)
static voidreadBySax(File file, int rid, RowHandler rowHandler)通过Sax方式读取Excel,同时支持03和07格式
static voidreadBySax(File file, String idOrRid, RowHandler rowHandler)通过Sax方式读取Excel,同时支持03和07格式
static voidreadBySax(InputStream in, int rid, RowHandler rowHandler)通过Sax方式读取Excel,同时支持03和07格式
static voidreadBySax(InputStream in, String idOrRid, RowHandler rowHandler)通过Sax方式读取Excel,同时支持03和07格式
static voidreadBySax(String path, int rid, RowHandler rowHandler)通过Sax方式读取Excel,同时支持03和07格式
static voidreadBySax(String path, String idOrRid, RowHandler rowHandler)通过Sax方式读取Excel,同时支持03和07格式
static CellLocationtoLocation(String locationRef)将Excel中地址标识符(例如A11,B5)等转换为行列表示 例如:A11 -》 x:0,y:10,B5-》x:1,y:4
  • readBySax
    public static void readBySax(String path,
                                 int rid,
                                 RowHandler rowHandler)
    

    通过Sax方式读取Excel,同时支持03和07格式

    • Parameters:

      path - Excel文件路径

      rid - sheet rid,-1表示全部Sheet, 0表示第一个Sheet

      rowHandler - 行处理器

    • Since:

      3.2.0

  • readBySax
    public static void readBySax(String path,
                                 String idOrRid,
                                 RowHandler rowHandler)
    

    通过Sax方式读取Excel,同时支持03和07格式

    • Parameters:

      path - Excel文件路径

      idOrRid - Excel中的sheet id或者rid编号,rid必须加rId前缀,例如rId1,如果为-1处理所有编号的sheet

      rowHandler - 行处理器

    • Since:

      5.4.4

  • readBySax
    public static void readBySax(File file,
                                 int rid,
                                 RowHandler rowHandler)
    

    通过Sax方式读取Excel,同时支持03和07格式

    • Parameters:

      file - Excel文件

      rid - sheet rid,-1表示全部Sheet, 0表示第一个Sheet

      rowHandler - 行处理器

    • Since:

      3.2.0

  • readBySax
    public static void readBySax(File file,
                                 String idOrRid,
                                 RowHandler rowHandler)
    

    通过Sax方式读取Excel,同时支持03和07格式

    • Parameters:

      file - Excel文件

      idOrRid - Excel中的sheet id或者rid编号,rid必须加rId前缀,例如rId1,如果为-1处理所有编号的sheet

      rowHandler - 行处理器

    • Since:

      5.4.4

  • readBySax
    public static void readBySax(InputStream in,
                                 int rid,
                                 RowHandler rowHandler)
    

    通过Sax方式读取Excel,同时支持03和07格式

    • Parameters:

      in - Excel流

      rid - sheet rid,-1表示全部Sheet, 0表示第一个Sheet

      rowHandler - 行处理器

    • Since:

      3.2.0

  • readBySax
    public static void readBySax(InputStream in,
                                 String idOrRid,
                                 RowHandler rowHandler)
    

    通过Sax方式读取Excel,同时支持03和07格式

    • Parameters:

      in - Excel流

      idOrRid - Excel中的sheet id或者rid编号,rid必须加rId前缀,例如rId1,如果为-1处理所有编号的sheet

      rowHandler - 行处理器

    • Since:

      5.4.4

  • read07BySax
    @Deprecated
    public static Excel07SaxReader read07BySax(InputStream in,
                                                           int rid,
                                                           RowHandler rowHandler)
    

    Deprecated. 请使用 readBySax(InputStream, int, RowHandler)

    Sax方式读取Excel07

    • Parameters:

      in - 输入流

      rid - Sheet rid,-1表示全部Sheet, 0表示第一个Sheet

      rowHandler - 行处理器

    • Returns:

      Excel07SaxReader

    • Since:

      3.2.0

  • read07BySax
    @Deprecated
    public static Excel07SaxReader read07BySax(File file,
                                                           int rid,
                                                           RowHandler rowHandler)
    

    Deprecated. 请使用 readBySax(File, int, RowHandler)

    Sax方式读取Excel07

    • Parameters:

      file - 文件

      rid - Sheet rid,-1表示全部Sheet, 0表示第一个Sheet

      rowHandler - 行处理器

    • Returns:

      Excel07SaxReader

    • Since:

      3.2.0

  • read07BySax
    @Deprecated
    public static Excel07SaxReader read07BySax(String path,
                                                           int rid,
                                                           RowHandler rowHandler)
    

    Deprecated. 请使用 readBySax(String, int, RowHandler)

    Sax方式读取Excel07

    • Parameters:

      path - 路径

      rid - Sheet rid,-1表示全部Sheet, 0表示第一个Sheet

      rowHandler - 行处理器

    • Returns:

      Excel07SaxReader

    • Since:

      3.2.0

  • read03BySax
    @Deprecated
    public static Excel03SaxReader read03BySax(InputStream in,
                                                           int sheetIndex,
                                                           RowHandler rowHandler)
    

    Deprecated. 请使用 readBySax(InputStream, int, RowHandler)

    Sax方式读取Excel03

    • Parameters:

      in - 输入流

      sheetIndex - Sheet索引,-1表示全部Sheet, 0表示第一个Sheet

      rowHandler - 行处理器

    • Returns:

      Excel03SaxReader

    • Since:

      3.2.0

  • read03BySax
    @Deprecated
    public static Excel03SaxReader read03BySax(File file,
                                                           int sheetIndex,
                                                           RowHandler rowHandler)
    

    Deprecated. 请使用 readBySax(File, int, RowHandler)

    Sax方式读取Excel03

    • Parameters:

      file - 文件

      sheetIndex - Sheet索引,-1表示全部Sheet, 0表示第一个Sheet

      rowHandler - 行处理器

    • Returns:

      Excel03SaxReader

    • Since:

      3.2.0

  • read03BySax
    @Deprecated
    public static Excel03SaxReader read03BySax(String path,
                                                           int sheetIndex,
                                                           RowHandler rowHandler)
    

    Deprecated. 请使用 readBySax(String, int, RowHandler)

    Sax方式读取Excel03

    • Parameters:

      path - 路径

      sheetIndex - Sheet索引,-1表示全部Sheet, 0表示第一个Sheet

      rowHandler - 行处理器

    • Returns:

      Excel03SaxReader

    • Since:

      3.2.0

  • getReader
    public static ExcelReader getReader(String bookFilePath)
    

    获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容
    默认调用第一个sheet

    • Parameters:

      bookFilePath - Excel文件路径,绝对路径或相对于ClassPath路径

    • Returns:

      ExcelReader

    • Since:

      3.1.1

  • getReader
    public static ExcelReader getReader(File bookFile)
    

    获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容
    默认调用第一个sheet

    • Parameters:

      bookFile - Excel文件

    • Returns:

      ExcelReader

  • getReader
    public static ExcelReader getReader(String bookFilePath,
                                        int sheetIndex)
    

    获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容

    • Parameters:

      bookFilePath - Excel文件路径,绝对路径或相对于ClassPath路径

      sheetIndex - sheet序号,0表示第一个sheet

    • Returns:

      ExcelReader

    • Since:

      3.1.1

  • getReader
    public static ExcelReader getReader(File bookFile,
                                        int sheetIndex)
    

    获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容

    • Parameters:

      bookFile - Excel文件

      sheetIndex - sheet序号,0表示第一个sheet

    • Returns:

      ExcelReader

  • getReader
    public static ExcelReader getReader(File bookFile,
                                        String sheetName)
    

    获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容

    • Parameters:

      bookFile - Excel文件

      sheetName - sheet名,第一个默认是sheet1

    • Returns:

      ExcelReader

  • getReader
    public static ExcelReader getReader(InputStream bookStream)
    

    获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容
    默认调用第一个sheet,读取结束自动关闭流

    • Parameters:

      bookStream - Excel文件的流

    • Returns:

      ExcelReader

  • getReader
    public static ExcelReader getReader(InputStream bookStream,
                                        boolean closeAfterRead)
    

    获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容
    默认调用第一个sheet

    • Parameters:

      bookStream - Excel文件的流

      closeAfterRead - 读取结束是否关闭流

    • Returns:

      ExcelReader

    • Since:

      4.0.3

  • getReader
    public static ExcelReader getReader(InputStream bookStream,
                                        int sheetIndex)
    

    获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容
    读取结束自动关闭流

    • Parameters:

      bookStream - Excel文件的流

      sheetIndex - sheet序号,0表示第一个sheet

    • Returns:

      ExcelReader

  • getReader
    @Deprecated
    public static ExcelReader getReader(InputStream bookStream,
                                                    int sheetIndex,
                                                    boolean closeAfterRead)
    

    Deprecated. 使用完毕无论是否closeAfterRead,poi会关闭流,此参数无意义。

    获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容

    • Parameters:

      bookStream - Excel文件的流

      sheetIndex - sheet序号,0表示第一个sheet

      closeAfterRead - 读取结束是否关闭流

    • Returns:

      ExcelReader

    • Since:

      4.0.3

  • getReader
    public static ExcelReader getReader(InputStream bookStream,
                                        String sheetName)
    

    获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容
    读取结束自动关闭流

    • Parameters:

      bookStream - Excel文件的流

      sheetName - sheet名,第一个默认是sheet1

    • Returns:

      ExcelReader

  • getReader
    @Deprecated
    public static ExcelReader getReader(InputStream bookStream,
                                                    String sheetName,
                                                    boolean closeAfterRead)
    

    Deprecated. 使用完毕无论是否closeAfterRead,poi会关闭流,此参数无意义。

    获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容

    • Parameters:

      bookStream - Excel文件的流

      sheetName - sheet名,第一个默认是sheet1

      closeAfterRead - 读取结束是否关闭流

    • Returns:

      ExcelReader

  • getWriter
    public static ExcelWriter getWriter()
    

    获得ExcelWriter,默认写出到第一个sheet
    不传入写出的Excel文件路径,只能调用ExcelWriter#flush(OutputStream)方法写出到流
    若写出到文件,还需调用ExcelWriter.setDestFile(File)方法自定义写出的文件,然后调用ExcelWriter.flush()方法写出到文件

  • getWriter
    public static ExcelWriter getWriter(boolean isXlsx)
    

    获得ExcelWriter,默认写出到第一个sheet
    不传入写出的Excel文件路径,只能调用ExcelWriter#flush(OutputStream)方法写出到流
    若写出到文件,还需调用ExcelWriter.setDestFile(File)方法自定义写出的文件,然后调用ExcelWriter.flush()方法写出到文件

    • Parameters:

      isXlsx - 是否为xlsx格式

    • Returns:

      ExcelWriter

    • Since:

      3.2.1

  • getWriter
    public static ExcelWriter getWriter(String destFilePath)
    

    获得ExcelWriter,默认写出到第一个sheet

    • Parameters:

      destFilePath - 目标文件路径

    • Returns:

      ExcelWriter

  • getWriterWithSheet
    public static ExcelWriter getWriterWithSheet(String sheetName)
    

    获得ExcelWriter,默认写出到第一个sheet

    • Parameters:

      sheetName - Sheet名

    • Returns:

      ExcelWriter

    • Since:

      4.5.18

  • getWriter
    public static ExcelWriter getWriter(File destFile)
    

    获得ExcelWriter,默认写出到第一个sheet,名字为sheet1

    • Parameters:

      destFile - 目标文件

    • Returns:

      ExcelWriter

  • getWriter
    public static ExcelWriter getWriter(String destFilePath,
                                        String sheetName)
    

    获得ExcelWriter

    • Parameters:

      destFilePath - 目标文件路径

      sheetName - sheet表名

    • Returns:

      ExcelWriter

  • getWriter
    public static ExcelWriter getWriter(File destFile,
                                        String sheetName)
    

    获得ExcelWriter

    • Parameters:

      destFile - 目标文件

      sheetName - sheet表名

    • Returns:

      ExcelWriter

  • getBigWriter
    public static ExcelWriter getBigWriter()
    

    获得BigExcelWriter,默认写出到第一个sheet
    不传入写出的Excel文件路径,只能调用ExcelWriter#flush(OutputStream)方法写出到流
    若写出到文件,还需调用ExcelWriter.setDestFile(File)方法自定义写出的文件,然后调用ExcelWriter.flush()方法写出到文件

  • getBigWriter
    public static ExcelWriter getBigWriter(int rowAccessWindowSize)
    

    获得BigExcelWriter,默认写出到第一个sheet
    不传入写出的Excel文件路径,只能调用ExcelWriter#flush(OutputStream)方法写出到流
    若写出到文件,还需调用ExcelWriter.setDestFile(File)方法自定义写出的文件,然后调用ExcelWriter.flush()方法写出到文件

    • Parameters:

      rowAccessWindowSize - 在内存中的行数

    • Returns:

      BigExcelWriter

    • Since:

      4.1.13

  • getBigWriter
    public static BigExcelWriter getBigWriter(String destFilePath)
    

    获得BigExcelWriter,默认写出到第一个sheet

    • Parameters:

      destFilePath - 目标文件路径

    • Returns:

      BigExcelWriter

  • getBigWriter
    public static BigExcelWriter getBigWriter(File destFile)
    

    获得BigExcelWriter,默认写出到第一个sheet,名字为sheet1

  • getBigWriter
    public static BigExcelWriter getBigWriter(String destFilePath,
                                              String sheetName)
    

    获得BigExcelWriter

    • Parameters:

      destFilePath - 目标文件路径

      sheetName - sheet表名

    • Returns:

      BigExcelWriter

  • getBigWriter
    public static BigExcelWriter getBigWriter(File destFile,
                                              String sheetName)
    

    获得BigExcelWriter

    • Parameters:

      destFile - 目标文件

      sheetName - sheet表名

    • Returns:

      BigExcelWriter

  • indexToColName
    public static String indexToColName(int index)
    

    将Sheet列号变为列名

    • Parameters:

      index - 列号, 从0开始

    • Returns:

      0-》A; 1-》B…26-》AA

    • Since:

      4.1.20

  • colNameToIndex
    public static int colNameToIndex(String colName)
    

    根据表元的列名转换为列号

    • Parameters:

      colName - 列名, 从A开始

    • Returns:

      A1-》0; B1-》1…AA1-》26

    • Since:

      4.1.20

  • toLocation
    public static CellLocation toLocation(String locationRef)
    

    将Excel中地址标识符(例如A11,B5)等转换为行列表示
    例如:A11 -》 x:0,y:10,B5-》x:1,y:4

    • Parameters:

      locationRef - 单元格地址标识符,例如A11,B5

    • Returns:

      坐标点,x表示行,从0开始,y表示列,从0开始

    • Since:

      5.1.4

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
好的,使用 Easy Excel 读取 Excel 文件可以很方便地实现。以下是 Spring Boot 中使用 Easy Excel 读取 Excel 文件的示例代码: 首先,需要在 pom.xml 文件中添加以下依赖: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.6</version> </dependency> ``` 然后,创建一个 ExcelUtils 工具类,代码如下: ```java public class ExcelUtils { /** * 读取 Excel 文件 * * @param inputStream Excel 文件输入流 * @param clazz 映射实体类的 Class 对象 * @param <T> 实体类类型 * @return Excel 文件中的数据列表 */ public static <T> List<T> readExcel(InputStream inputStream, Class<T> clazz) { List<T> dataList = new ArrayList<>(); try { // 创建 Excel 读取ExcelReader excelReader = EasyExcelFactory.getReader(inputStream); // 获取第一个 sheet ReadSheet readSheet = EasyExcelFactory.readSheet(0).build(); // 注册数据监听器 excelReader.registerReadListener(new ExcelListener<T>(dataList)); // 开始读取数据 excelReader.read(readSheet); } catch (Exception e) { e.printStackTrace(); } finally { try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } return dataList; } /** * Excel 监听器,用于读取 Excel 文件中的数据 * * @param <T> 实体类类型 */ private static class ExcelListener<T> extends AnalysisEventListener<T> { // 数据列表 private List<T> dataList; public ExcelListener(List<T> dataList) { this.dataList = dataList; } @Override public void invoke(T data, AnalysisContext context) { // 读取每一行数据 dataList.add(data); } @Override public void doAfterAllAnalysed(AnalysisContext context) { // 读取完成后的操作 } } } ``` 最后,在 Controller 中添加以下代码,即可实现上传 Excel 文件并读取其中数据的功能: ```java @PostMapping("/uploadExcel") public ResponseEntity<String> uploadExcel(@RequestParam("file") MultipartFile file) { try { // 读取 Excel 文件 List<ExcelData> dataList = ExcelUtils.readExcel(file.getInputStream(), ExcelData.class); // 处理 Excel 数据 // ... return ResponseEntity.ok("上传成功"); } catch (Exception e) { e.printStackTrace(); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("上传失败"); } } ``` 其中,ExcelData 是映射 Excel 文件中数据的实体类。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芝兰生于深谷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值