翼度科技»论坛 编程开发 mysql 查看内容

Springboot操作Poi进行Excel导入

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15



以上就是我所要导入的Excel模板。
需求重点
经过这次需求的实现,发现这个需求最难的点 就在 模板模板模板!
模板中数据的关系,理清楚思路
模板中的数据,到底是多sheet还是说有合并单元进行导入
实现感悟
不管是多个sheet、还是说合并单元格、最重要的思想都是说将Excel中的数据进行拼接为一条一条的List记录进行新增数据。
  1.     /**
  2.      * 用于检测是否是表头行,此方法就是说代码再执行的时候找到一级这个字段的名称,然后知道获取字段从此开始
  3.      *
  4.      * @param row
  5.      * @return
  6.      */
  7.     private boolean isHeaderRow(Row row) {
  8.         Cell firstCell = row.getCell(1);
  9.         return firstCell != null && "一级".equals(firstCell.getStringCellValue().trim());
  10.     }
复制代码
  1.     /**
  2.      *  
  3.      * 上传文件,进行解析
  4.      * @param file 文件
  5.      * @return
  6.      */
  7.     public Result<?> importExcels(MultipartFile file) {
  8.         Map<Integer, List<Object>> sheetDataMap = new HashMap<>();
  9.         try {
  10.             // 获取工作簿,解析整个Excel文件
  11.             Workbook workbook = new XSSFWorkbook(file.getInputStream());
  12.             // 循环遍历每个Sheet
  13.             for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
  14.                 Sheet sheet = workbook.getSheetAt(i);
  15.                 // 解析每个Sheet的数据
  16.                 List<Object> sheetData = parseSheet(sheet);
  17.                 // 将Sheet的数据存储到Map中,以Sheet名称为Key
  18.                 sheetDataMap.put(i, sheetData);
  19.             }
  20.         } catch (Exception e) {
  21.             e.printStackTrace();
  22.         }
  23.         // 处理数据
  24.         processingData(sheetDataMap);
  25.         return Result.ok(sheetDataMap);
  26.     }
复制代码
[code]     /**     * 解析给定的Sheet,并将数据存储到List中     *     * @param sheet 要解析的Sheet     * @return 包含每行数据的List     */    private List parseSheet(Sheet sheet) {        List data = new ArrayList();        boolean isHeaderFound = false;        // 循环遍历每一行数据        for (int rowIndex = 1; rowIndex

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具