EasyExcel的CellDataTypeEnum.IMAGE不见了
时间: 2023-11-22 09:08:12 浏览: 106
从EasyExcel 2.2.6版本开始,CellDataTypeEnum中的IMAGE已经被移除了,取而代之的是一个新的类ImageType。您可以使用以下代码来设置单元格数据类型为图片类型:
```
cell.setCellType(CellType.IMAGE);
cell.setCellStyle(style);
byte[] imageData = getImageData(); // 获取图片数据
Drawing<?> patriarch = sheet.createDrawingPatriarch();
ClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0, (short) colIndex, rowIndex, (short) (colIndex + 1), rowIndex + 1);
patriarch.createPicture(anchor, workbook.addPicture(imageData, ImageType.PNG));
```
相关问题
springboot 集成 easyexcel 3.x 来实现
SpringBoot 是一个非常流行的 Java 开发框架,而 EasyExcel 是一个用于快速读写 Excel 的工具。通过将 EasyExcel 3.x 集成到 SpringBoot 项目中,可以实现在项目中进行对 Excel 的读写操作。
首先,需要在 SpringBoot 项目的 pom.xml 文件中添加 EasyExcel 依赖,并通过 Maven 进行下载。然后可以在代码中使用 EasyExcel 提供的读写方法来操作 Excel,例如使用 ExcelReader 来读取 Excel 文件的内容,或者使用 ExcelWriter 来将数据写入到 Excel 文件中。
在 SpringBoot 项目中集成 EasyExcel 3.x 可以通过创建一个配置类来进行配置,比如可以注入 EasyExcel 相关的对象,设置读写的参数,以及处理 Excel 数据的监听器等。通过配置好的相关参数和监听器,可以灵活地处理 Excel 数据的读写操作。
另外,EasyExcel 3.x 还支持基于注解的方式来操作 Excel,比如通过在实体类中使用 @ExcelProperty 注解来标识 Excel 的表头名称和导出顺序。这样,在读写 Excel 数据时,就可以直接使用实体类来进行映射。
总之,通过在 SpringBoot 项目中集成 EasyExcel 3.x,可以方便地实现对 Excel 的读写操作,同时借助 SpringBoot 的特性可以更好地管理和组织项目代码,提高开发效率,使得操作 Excel 数据变得更加简单和灵活。
EasyExcel 2.x Long超出范围
EasyExcel 2.x中,当读取Excel文件中的Long类型数据超出范围时,会抛出`com.alibaba.excel.exception.ExcelDataConvertException`异常。这是因为Java中的Long类型数据范围是-2^63到2^63-1,如果Excel文件中的数据超出了这个范围,就会抛出该异常。
以下是处理该异常的示例代码:
```java
public class ExcelListener extends AnalysisEventListener<DemoData> {
private static final Logger LOGGER = LoggerFactory.getLogger(ExcelListener.class);
private static final int BATCH_COUNT = 5;
List<DemoData> list = new ArrayList<>();
/**
* 每解析一行会回调invoke()方法。
* @param data
* @param context
*/
@Override
public void invoke(DemoData data, AnalysisContext context) {
LOGGER.info("解析到一条数据:{}", JSON.toJSONString(data));
list.add(data);
if (list.size() >= BATCH_COUNT) {
saveData();
list.clear();
}
}
/**
* 所有数据解析完成会回调invokeHeadMap()方法。
* @param headMap
* @param context
*/
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
LOGGER.info("解析到一条头数据:{}", JSON.toJSONString(headMap));
}
/**
* 解析异常会回调该方法。
* @param exception
* @param context
* @throws Exception
*/
@Override
public void onException(Exception exception, AnalysisContext context) throws Exception {
LOGGER.error("解析失败,但是继续解析下一行:{}", exception.getMessage());
if (exception instanceof ExcelDataConvertException) {
ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException) exception;
LOGGER.error("第{}行,第{}列解析异常,数据为:{}", excelDataConvertException.getRowIndex(),
excelDataConvertException.getColumnIndex(), excelDataConvertException.getCellData());
}
}
/**
* 所有数据解析完成会回调该方法。
* @param context
*/
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
saveData();
LOGGER.info("所有数据解析完成!");
}
private void saveData() {
LOGGER.info("{}条数据,开始存储数据库!", list.size());
LOGGER.info("存储数据库成功!");
}
}
```
在上述代码中,`onException()`方法会在解析异常时被回调,如果异常是`ExcelDataConvertException`类型,就说明是Long类型数据超出范围的异常,可以通过该异常对象获取到出错的行数、列数和数据内容。
相关推荐
![jar](https://img-home.csdnimg.cn/images/20210720083455.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)