IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> java解析Excel数据 -> 正文阅读

[开发测试]java解析Excel数据

作者:>

Excel格式为表头加上值的格式
在这里插入图片描述

service接口层:

 Map<String, Object> analysisExcel(MultipartFile file);

实现层(impl)

package com.yxf.util.service.impl;/*
 *@program:Utils
 *@author: yuXF
 *@Time: 2022/3/8  15:35
 */

import com.yxf.util.service.ExcelOperateService;
import org.apache.poi.ss.usermodel.*;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.math.BigDecimal;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.*;

@Service
public class ExcelOperateServiceImpl implements ExcelOperateService {

    @Override
    public Map<String, Object> analysisExcel(MultipartFile file) {
        /*读取Excel首行 命名为title*/
        List<String> titles = getTheFirstRow(file);
        if (titles.size() > 0) {
            /*根据title的下标去遍历v后续的Excel*/
            List<Map<String, String>> valueMapList = getExcelValue(file, titles);
            Map<String, Object> valueMap = new HashMap<>();
            valueMap.put("title", titles);
            valueMap.put("value", valueMapList);
            return valueMap;
        }
        return null;
    }

    private List<Map<String, String>> getExcelValue(MultipartFile file, List<String> titles) {
        List<Map<String, String>> valueMapLis = new ArrayList<>();
        Sheet sheetAt = readExcel(file);
        if (sheetAt != null) {
            for (int i = 1; i <= sheetAt.getLastRowNum(); i++) {/*遍历第一行之后的数据*/
                Row row = sheetAt.getRow(i);
                if (row != null) {
                    Map<String, String> valueMap = new HashMap<>();
                    for (int n = 0; n < titles.size(); n++) {
                        String value = getTheValue(row.getCell(n));
                        valueMap.put(titles.get(n), value);
                    }
                    valueMapLis.add(valueMap);
                }
            }
        }
        return valueMapLis;
    }

    private List<String> getTheFirstRow(MultipartFile file) {
        List<String> titles = new ArrayList<>();
        Sheet sheetAt = readExcel(file);
        if (sheetAt != null) {
            /*获取的第一行*/
            Row row = sheetAt.getRow(0);
            if (row != null) {
                for (Cell cell : row) {
                    String title = getTheValue(cell);
                    titles.add(title);
                }
            }

        }
        return titles;
    }

    private String getTheValue(Cell cell) {
        String value;
        if (cell == null) {
            return "";
        } else if (cell.getCellType().equals(CellType.FORMULA)) {
            switch (cell.getCachedFormulaResultType()) {
                case STRING:
                    value = cell.getStringCellValue();
                    break;
                case NUMERIC:
                    NumberFormat nf = NumberFormat.getInstance();
                    nf.setGroupingUsed(false);
                    value = String.valueOf(nf.format(cell.getNumericCellValue()));
                    break;
                case BOOLEAN:
                    value = String.valueOf(cell.getBooleanCellValue());
                    break;
                default:
                    value = cell.getCellFormula();
            }
        } else if (cell.getCellType().equals(CellType.NUMERIC)) {
            if (DateUtil.isCellDateFormatted(cell)) {
                value = new SimpleDateFormat("yyyy-MM-dd").format(cell.getDateCellValue());
            } else {
                value = new BigDecimal(cell.toString()).stripTrailingZeros().toPlainString();
            }
        } else {
            value = cell.toString() == null ? "" : cell.toString();
        }
        return value;
    }


    private Sheet readExcel(MultipartFile file) {
        try {
            return WorkbookFactory.create(file.getInputStream()).getSheetAt(0);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

出参样式:

{
  "title": [
    "排班工号",
    "员工姓名",
    "可用小时",
    "开始日期",
    "失效日期",
    "日程类型",
    "备注"
  ],
  "value": [
    {
      "员工姓名": "张三",
      "失效日期": "2022-9-31",
      "开始日期": "2022-3-8",
      "可用小时": "4",
      "备注": "",
      "排班工号": "1002658",
      "日程类型": "市场监管局12315|调休"
    },
    {
      "员工姓名": "李四",
      "失效日期": "2022-9-31",
      "开始日期": "2022-3-8",
      "可用小时": "4",
      "备注": "",
      "排班工号": "1000239",
      "日程类型": "市场监管局12315|调休"
    },
    {
      "员工姓名": "王五",
      "失效日期": "2022-9-31",
      "开始日期": "2022-3-8",
      "可用小时": "4",
      "备注": "",
      "排班工号": "1000508",
      "日程类型": "市场监管局12315|调休"
    }
  ]
}
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-03-11 22:31:18  更:2022-03-11 22:31:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 0:43:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码