easyexcel writer.finsh时 报错oom 为什么
时间: 2024-01-09 17:05:34 浏览: 92
OOM (Out of Memory) 错误通常发生在内存不足时,导致无法继续执行程序。在 EasyExcel 中,当写入大量数据时,可能会出现 OOM 错误。
造成 OOM 错误的原因可能有以下几点:
1. 内存设置过小:如果你在处理大量数据时,没有为 Java 虚拟机(JVM)分配足够的内存空间,就容易出现 OOM 错误。你可以通过增加 JVM 的内存限制来解决这个问题。例如,使用 `-Xmx` 参数增加最大堆内存限制。
2. 数据量过大:当你尝试一次性写入大量数据时,例如超过数百万行的数据,可能会超出 JVM 的内存限制。这时可以考虑将数据分批写入或者使用流式写入的方式处理数据。
3. 代码逻辑问题:有时候 OOM 错误是由于代码逻辑问题引起的。例如,可能存在一些无限循环或者重复创建大对象的情况,导致内存占用过高。
针对 OOM 错误,你可以尝试以下解决方案:
1. 增加 JVM 的内存限制,在启动程序时通过 `-Xmx` 参数设置更大的堆内存限制。
2. 分批写入数据,将大数据量分成多个较小的批次进行写入。
3. 优化代码逻辑,确保没有无限循环或者重复创建大对象的情况。
4. 如果仍然无法解决 OOM 错误,可能需要考虑采用其他处理大数据量的方式,例如使用数据库进行存储或者使用分布式计算框架来处理数据。
相关问题
EasyExcel.read报错 For input string: "7.00"
这个报错通常是因为 EasyExcel 在读取 Excel 文件时,发现了一个非法的数据格式,导致无法进行转换。根据报错信息来看,应该是你的 Excel 文件中有一个单元格的值是 "7.00",但是 EasyExcel 无法将其转换成整数或浮点数。
解决方法是,在读取 Excel 文件时,指定该单元格的数据类型为字符串类型。可以这样写:
```
EasyExcel.read(fileName)
.headRowNumber(1)
.registerConverter(new StringConverter()) // 注册字符串类型转换器
.sheet(sheetName)
.doRead();
```
其中,`StringConverter` 是一个简单的字符串类型转换器,实现如下:
```
public class StringConverter implements Converter<String> {
@Override
public Class<String> supportJavaTypeKey() {
return String.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public String convertToJavaData(CellData cellData, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) throws Exception {
return cellData.getStringValue();
}
@Override
public CellData<String> convertToExcelData(String value, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) throws Exception {
return new CellData<>(value);
}
}
```
这样就可以避免该报错了。
easyexcel异常类_【EasyExcel】使用easyExcel过程中,项目报错的解决集合
在使用EasyExcel过程中,可能会遇到各种异常。常见的及其解决方法如下:
1. java.lang.NoSuchMethodError: org.apache.poi.ss.usermodel.Workbook.getSpreadsheetVersion()Lorg/apache/poi/ss/usermodel/SpreadsheetVersion;
这个错误是由于EasyExcel依赖的POI版本过低导致的,需要将POI的版本升级到4.0.1及以上。可以在pom.xml文件中将poi的版本改为:
```
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.0.1</version>
</dependency>
```
2. java.lang.ClassNotFoundException: com.alibaba.excel.exception.ExcelAnalysisException
这个错误是由于没有引入EasyExcel的依赖导致的,需要在pom.xml文件中加入以下依赖:
```
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.6</version>
</dependency>
```
3. com.alibaba.excel.exception.ExcelAnalysisException: Unsupported file format, expected xls or xlsx but got UNKNOWN
这个错误是由于文件格式不正确导致的,EasyExcel只支持xls和xlsx格式的文件,如果使用其他格式的文件会出现此错误。
4. java.lang.IllegalStateException: Cannot find field
这个错误是由于实体类的字段与Excel中的列名不匹配导致的,需要将实体类的字段名改为Excel中的列名或者使用@ExcelProperty注解来指定实体类的字段和Excel中的列名对应关系。
5. java.lang.IllegalStateException: Cannot read more than one sheet
这个错误是由于Excel中有多个Sheet导致的,EasyExcel默认只读取第一个Sheet,如果需要读取其他Sheet需要指定Sheet名称或者索引。
以上是常见的EasyExcel异常及其解决方法,希望能帮助到大家。
阅读全文