Java集成POI进行Excele的导入导出,以及报错: java.lang.AbstractMethodError..........

在Java项目中使用POI处理Excel时遇到`java.lang.AbstractMethodError`,最初怀疑是代码错误,但通过Stack Overflow发现原因是POI版本过低。更新到4.0.0版本后问题解决。提供了导入和导出Excel的代码示例,读取部分针对POI的新特性进行了调整,特别是使用`getCellTypeEnum()`代替了已废弃的`getCellType()`。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

报错信息如下

 java.lang.AbstractMethodError: org.apache.poi.xssf.usermodel.XSSFCell.setCellType(Lorg/apache/poi/ss/usermodel/CellType;

 

 

首先项目集成POI进行导入导出的pom文件

注意:最开始我使用的是3.15和3.14,但是会产生上面的报错信息,我这边一直以为是我代码存在问题, 反复修改之后还是存在问题,最后翻墙查了下stackoverflow,感觉出错的原因是poi的版本过低,于是将这边都修改成下面的4.0.0,最后解决问题

https://stackoverflow.com/questions/39993683/alternative-to-deprecated-getcelltype

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

准备工作,将本地文件夹中的excel,准备好,修改demo中的地址

写入Excele的demo

package com.excel.demo.util;

import com.excel.demo.model.User;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class WriteExcel {
    private static final String EXCEL_XLS = "xls";
    private static final String EXCEL_XLSX = "xlsx";

    public static void main(String[] args) {
//        ArrayList<String> strings = new ArrayList<>();
//        strings.add("1");
//        strings.add("2");
//        strings.add("3");
//        strings.add("4");
//        strings.add("5");
//        strings.add("6");
//        strings.add("7");
//        writeExcelToRow(strings, 3, "E:/writeExcel.xlsx");

        ArrayList<User> vos = new ArrayList<>();
        User user = new User();
        user.setAddress("地球村");
        user.setLove("喜洋ccccc洋");
        user.setAge(18);
        user.setName("张三");
        user.setSex(true);
        vos.add(user);
        vos.add(user);
        vos.add(user);
        vos.add(user);
        writeExcelVo(vos, "E:/writeExcel.xlsx");

    }

    //向Excel里存储对象
    public static void writeExcelVo(List<User> dataList, String finalXlsxPath) {
        OutputStream out = null;
        try {
            // 获取总列数
            int columnNumCount = dataList.size();
            // 读取Excel文档
            File finalXlsxFile = new File(finalXlsxPath);
            Workbook workBook = getWorkbok(finalXlsxFile);
            // sheet 对应一个工作页
            Sheet sheet = workBook.getSheetAt(0);
            /**
         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值