当前位置: 首页 > article >正文

SpringBoot:解析excel

解析Excel文件,可以使用Apache POI库

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.2</version>
</dependency>

上代码: 

/**
 * <b>Function: </b> todo
 *
 * @program: 解析excel文件
 * @Package: com.kingbal.king.dmp
 * @author: dingcho
 * @date: 2024/09/18
 * @version: 1.0
 * @Copyright: 2024 www.kingbal.com Inc. All rights reserved.
 */
@Slf4j
@Service
public class ExcelServiceImpl implements IExcelService {
 
    @Override
    public List<List<String>> readExcel(MultipartFile file) throws IOException {
        List<List<String>> data = Lists.newArrayList();
        Workbook workbook = new XSSFWorkbook(file.getInputStream());
        Sheet sheet = workbook.getSheetAt(0);
        Iterator<Row> rowIterator = sheet.iterator();
        while (rowIterator.hasNext()) {
            Row row = rowIterator.next();
            List<String> rowData = new ArrayList<>();
            Iterator<Cell> cellIterator = row.iterator();
            while (cellIterator.hasNext()) {
                Cell cell = cellIterator.next();
                rowData.add(getCellValueAsString(cell));
            }
            data.add(rowData);
        }
        workbook.close();
        return data;
    }
 
    private String getCellValueAsString(Cell cell) {
        switch (cell.getCellTypeEnum()) {
            case STRING:
                return cell.getStringCellValue();
            case NUMERIC:
                return String.valueOf(cell.getNumericCellValue());
            case BOOLEAN:
                return String.valueOf(cell.getBooleanCellValue());
            default:
                return "";
        }
    }
}

readExcel方法接受一个MultipartFile类型的参数,这是Spring MVC中处理文件上传的类型。然后使用Apache POI的WorkbookSheet类来读取Excel文件,并迭代每一行和每一个单元格,将单元格的值转换为字符串并存储到结果列表中。

要注意的是,这个例子假设Excel文件是XLSX格式,如果需要处理旧的XLS格式

请使用HSSFWorkbook代替XSSFWorkbook


http://www.kler.cn/news/310779.html

相关文章:

  • PowerBI 关于FILTERS函数和VALUES函数
  • Spring模块详解Ⅳ(Spring ORM和Spring Transaction)
  • RedisTemplate混用带来的序列化问题
  • json.dumps 中的参数
  • 预警提醒并生成日志,便于后期追溯的智慧地产开源了
  • 让IT部门弄一个炫酷的数字驾驶舱就是数字化转型成功?
  • Vue 3 中动态赋值 ref 的应用
  • windows下使用 vscode 远程X11服务GUI显示的三种方法
  • 从种草到销售:家居品牌构建O2O私域运营的完整闭环
  • 考研数学精解【3】
  • 四、(JS)JS中常见的加载事件
  • 软考(中级-软件设计师)(0919)
  • 百度Android IM SDK组件能力建设及应用
  • Golang、Python、C语言、Java的圆桌会议
  • https和http区别
  • 【网络】TCP/IP 五层网络模型:网络层
  • 计算机专业毕设-校园新闻网站
  • vue实现二维码生成器应用
  • 【ARM】Cache深度解读
  • redis 在企业开发实践中注意事项
  • MATLAB中的无线通信系统部署和优化工具有哪些
  • 【Leetcode152】分割回文串(回溯 | 递归)
  • python 实现double factorial recursive双阶乘递归算法
  • 运行npm install 时,卡在sill idealTree buildDeps没有反应
  • 固件升级之Bootloader(三)
  • SpringBoot基础实战系列(二)springboot解析json与HttpMessageConverter
  • 利用echarts 显示图片信息
  • PathoDuet: HE 和 IHC 染色病理切片分析的基础模型|文献速递-Transformer架构在医学影像分析中的应用
  • PHP 环境搭建教程
  • Gin渲染