报错信息如下
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);
/**