SpringBoot:解析excel

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

XML 复制代码
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.2</version>
</dependency>

上代码:

java 复制代码
/**
 * <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的Workbook和Sheet类来读取Excel文件,并迭代每一行和每一个单元格,将单元格的值转换为字符串并存储到结果列表中。

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

请使用HSSFWorkbook代替XSSFWorkbook

相关推荐
外收内放8 分钟前
Python基础语法练习题(69)
开发语言·python
lojox12 分钟前
深入理解 C++ STL:vector 底层实现、迭代器失效与 list 特性
开发语言·c++
iotxiaohu15 分钟前
用 cflow 查看 C 函数调用关系
c语言·开发语言·cflow
zhang-ge15 分钟前
python包和项目管理器uv在ubuntu下的安装与使用
开发语言·python·uv
SL_staff1 小时前
物模型三要素误用避坑指南:属性、事件、服务的正确建模逻辑
java
一条泥憨鱼1 小时前
【Redis | 黑马点评】短信登录功能 源码深度分析
java·redis·后端·session·黑马点评
威哥爱编程1 小时前
【AI全栈12-12】Spring Boot 3.x → 4.x 迁移实操:Jakarta 11、Jackson 3 与 AI 2.0
java·spring boot·后端
微笑星河q1 小时前
C++类和对象(下)初始化列表、类型转换、static、友元、内部类、匿名对象
开发语言·c++
威哥爱编程1 小时前
【AI全栈12-11】Spring Boot 把 AI 接口真正上线扛量:限流 / 降级 / 可观测
java·spring boot·后端
小蒜学长1 小时前
基于SpringBoot+uni-app的闪洁家政系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·uni-app·家政服务