spring boot读取Excel操作示例

本文实例讲述了spring boot读取Excel操作。分享给大家供大家参考,具体如下:

首先引入相关依赖

 <!--解析office相关文件-->
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi</artifactId>
      <version>3.17</version>
    </dependency>
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>3.17</version>
    </dependency>
 <!--解析office相关文件-->

工具类

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
public class OfficeUtils {
  protected static final Logger logger = LoggerFactory.getLogger(OfficeUtils.class);
  public static Map<Integer, Map<Integer, Object>> readExcelContentz(MultipartFile file) throws Exception {
    Map<Integer, Map<Integer, Object>> content = new HashMap<Integer, Map<Integer, Object>>();
    // 上传文件名
    Workbook wb = getWb(file);
    if (wb == null) {
      throw new BusinessException(ErrorType.WORK_BOOK_EMPTY);
    }
    Sheet sheet = wb.getSheetAt(0);
    // 得到总行数
    int rowNum = sheet.getLastRowNum();
    Row row = sheet.getRow(0);
    int colNum = row.getPhysicalNumberOfCells();
    // 正文内容应该从第二行开始,第一行为表头的标题
    for (int i = 1; i <= rowNum; i++) {
      row = sheet.getRow(i);
      int j = 0;
      Map<Integer, Object> cellValue = new HashMap<Integer, Object>();
      while (j < colNum) {
        Object obj = getCellFormatValue(row.getCell(j));
        cellValue.put(j, obj);
        j++;
      }
      content.put(i, cellValue);
    }
    return content;
  }
  //根据Cell类型设置数据
  private static Object getCellFormatValue(Cell cell) {
    Object cellvalue = "";
    if (cell != null) {
      switch (cell.getCellTypeEnum()) {
        case NUMERIC:
          cellvalue = String.valueOf(cell.getNumericCellValue());
          break;
        case FORMULA: {
          cellvalue = cell.getDateCellValue();
          break;
        }
        case STRING:
          cellvalue = cell.getRichStringCellValue().getString();
          break;
        default:
          cellvalue = "";
      }
    } else {
      cellvalue = "";
    }
    return cellvalue;
  }
  private static Workbook getWb(MultipartFile mf) {
    String filepath = mf.getOriginalFilename();
    String ext = filepath.substring(filepath.lastIndexOf("."));
    Workbook wb = null;
    try {
      InputStream is = mf.getInputStream();
      if (".xls".equals(ext)) {
        wb = new HSSFWorkbook(is);
      } else if (".xlsx".equals(ext)) {
        wb = new XSSFWorkbook(is);
      } else {
        wb = null;
      }
    } catch (FileNotFoundException e) {
      logger.error("FileNotFoundException", e);
    } catch (IOException e) {
      logger.error("IOException", e);
    }
    return wb;
  }
}

service层

public Map<Integer, Map<Integer,Object>> addCustomerInfo(MultipartFile file) {
  Map<Integer, Map<Integer,Object>> map = new HashMap<>();
  try {
    map = ReadExcelUtil.readExcelContentz(file);
  } catch (Exception e) {
    e.printStackTrace();
  }
  //excel数据存在map里,map.get(0).get(0)为excel第1行第1列的值,此处可对数据进行处理
}

controller层

@PostMapping
public String add(@RequestParam("file")MultipartFile file){
  Map<Integer, Map<Integer,Object>> map = customerService.addCustomerInfo(file);
  return "success";
}

至此,基本完成Excel的解析。

更多关于java相关内容感兴趣的读者可查看本站专题:《Spring框架入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

(0)

相关推荐

  • SpringMVC上传和解析Excel方法

    示例:导入相关数据(Excel文件),相关的文件数据编辑好. XML文件配置 再spring的xml文件中配置要上传文件的大小 <!-- 上传文件拦截,设置最大上传文件大小 10M=10*1024*1024(B)=10485760 bytes --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver&qu

  • 使用Vue+Spring Boot实现Excel上传功能

    1.使用Vue-Cli创建前端项目 运用vue-cli工具可以很轻松地构建前端项目,当然,使用WebStorm来构建会更加简洁(如图).本文推荐使用WebStorm,因为在后续开发中,IDE会使我们的开发更加简洁.部分配置如图: 2.Navbar编写 作为一个WebApp,Navbar作为应用的导航栏是必不可少的.在本项目中,笔者引入了bootstrap对Navbar进行了轻松地构建.在vue中我们需要在components文件夹中将我们的组件加进去,对于本工程来说,Navbar是我们要加入的第

  • java springboot poi 从controller 接收不同类型excel 文件处理

    根据poi接收controller层的excel文件导入 可使用后缀名xls或xlsx格式的excel. 1.pom引入 <!-- poi 操作Excel --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <d

  • Springboot上传excel并将表格数据导入或更新mySql数据库的过程

    本文主要描述,Springboot-mybatis框架下上传excel,并将之导入mysql数据库的过程,如果用户id已存在,则进行更新修改数据库中该项信息,由于用到的是前后端分离技术,这里记录的主要是后端java部分,通过与前端接口进行对接实现功能,使用layui等前端框架与之对接,也可以自己写前端代码,本文以Controller开始,从导入过程开始讲述,其中包括字典表的转换 1.在pom.xml文件中导入注解,主要利用POI <dependency> <groupId>org.

  • Spring Boot Excel文件导出下载实现代码

    Spring Boot Excel 文件导出 目标: 实现Excel文件的直接导出下载,后续开发不需要开发很多代码,直接继承已经写好的代码,增加一个Xml配置就可以直接导出. 实现: 1.抽象类 BaseExcelView 继承 webmvc 的  AbstractXlsxStreamingView 抽象类, AbstractXlsxStreamingView 是webmvc继承了最顶层View接口,是可以直接大量数据导出的不会造成内存泄漏问题,即 SXSSFWorkbook 解决了内存问题,

  • SpringBoot使用POI进行Excel下载

    本文实例为大家分享了SpringBoot使用POI进行Excel下载的具体代码,供大家参考,具体内容如下 使用poi处理Excel特别方便,此处将处理Excel的代码分享出来. 1.maven引用 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependenc

  • Spring 实现excel及pdf导出表格示例

    整理文档,搜刮出一个Spring 实现excel及pdf导出表格的代码,稍微整理精简一下做下分享. excel 导出: package light.mvc.utils.excel; import java.util.Date; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse

  • Springboot使用POI实现导出Excel文件示例

    前面讲述了使用POI导出Word文件和读取Excel文件,这两个例子都相对简单,接下来要讲述的使用POI导出Excel文件要复杂得多,内容也会比较长. 创建表头信息 表头信息用于自动生成表头结构及排序 public class ExcelHeader implements Comparable<ExcelHeader>{ /** * excel的标题名称 */ private String title; /** * 每一个标题的顺序 */ private int order; /** * 说对

  • 详解poi+springmvc+springjdbc导入导出excel实例

    工作中常遇到导入导出excel的需求,本獂有一简答实例与大家分享. 废话不多说, 1.所需jar包: 2.前端代码: ieport.jsp: <%@page import="java.util.Date"%> <%@ page language="java" contentType="text/html; charset=utf-" pageEncoding="utf-"%> <!DOCTYPE

  • springboot实现上传并解析Excel过程解析

    添加pom依赖 <!-- excel解析包 --> <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <!--处理2003 excel--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.16<

随机推荐