开发者

Java读取Excel文件并写入数据库的示例代码

从指定路径的Excel文件中读取数据,跳过第一行(通常为标题行),并将每一行的数据映射到实体类对象的属性中。最终,将所有数据收集到列表中。

1、实体类代码

package com.code.boot.model;
import lombok.Data;
/**
 * @Author: Gurucyy
 * @date: 2024编程/03/23  09:47:05
 * @Description: EntityDto
 */
@Data
public class EntityDto {
    private String companyName; //企业名称
    private String plate; // 板块
    private String industry; // 行业
    private String companyCode; // 统一社会信用代码
}

2、实现方法

package com.code.boot.controller;
import org.apache.poi.ss.usermodel.*;
import Java.io.FileInputStream;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class ExcelReader {
    // 从指定的Excel文件路径读取数据,并返回一个SuzhouDto列表
    private List<EntityDto> readExcelData(String excelFilePath) {
        List<EntityDto> entityDtosList = new ArrayList<>();
        try (FileInputStream fileInputStream = new FileInputStream(new File(excelFilePath));
             Workbook workbook = WorkbookFactory.create(fileInputStream)) {
            Sheet sheet = workbook.getSheetAt(0);
            boolean isFirstRow = true;
            for (Row row : sheet) {
                if (isFirstRow) {
                    isFirstRow = false;
                    continue; // 跳过第一行(标题行)
                }
                EntityDto entityDto = new EntityDto();
                entityDto.setCompanyName(getCellValue(row.getCell(0)));
                entityDto.setPlate(getCellValue(row.getCell(1)));
                entityDto.setIndustry(getCellValue(row.getCell(2)));
                entityDto.setCompanyCode(getCellValue(row.getCell(3)));
                entityDtosList.add(entityDto);
            }
        } catch (Exception e) {
            // 根据自己需求,实现自定义异常处理机制
            e.printStackTrace();
        }
        return entityDtosList;
    }
    // 根据单元格类型获取单元格的值
  编程  private String getCellValue(Cell cell) {
        if (cell == null) {
            return "";
        }
        switch (cell.getCellType()) {
            case STRING:
                return cell.getStringCellVphpalue();
            case NUMERIC:
     php           if (DateUtil.isCellDateFormatted(cell)) {
                    // 可选:将日期转换为格式化的日期字符串
                    return cell.getDateCellValue().toString();
                } else {
                    return Double.toString(cell.getNumericCellValue());
                }
            case BOOLEAN:
                return Boolean.toString(cell.getBooleanCellValue());
            case FORMULA:
                return cell.getCellFormula();
            default:
                return "";  // 对于空白和其他类型
        }
    }
    // todo 如果想将所有类型的单元格统一转换为字符串类型,注释掉上面的getCellValue方法,调用该方法即可
    //privatqPuNQUe String getCellValue(Cell cell) {
    //    if (cell == null) {
    //        return "";
    //    }
    //    cell.setCellType(CellType.STRING);
    //    return cell.getStringCellValue();
    //}
}

3、根据最终返回的entityDtosList列表,使用MyBATisPlus的批量插入方法或其他方法,将数据保存到数据库。

到此这篇关于Java读取Excel文件并写入数据库的文章就介绍到这了,更多相关Java读取Excel文件内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新开发

开发排行榜