日常项目中使用easyExcel 但是easyExcel不支持带图片的excel导入,后面通过网络查找,再加上询问技术经理终于解决,大前提是图片在excel中不是嵌入的,需要悬浮才可以读取。代码如下
引用jar包为
<!--需要2.10版本及以上不然excel缺少工具类-->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>com.github.stupdit1t</groupId>
<artifactId>poi-excel</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
业务代码主要为
PoiResult<ProductTurnOrderPerfectQualityImportExcelVo> parse = ExcelHelper.opsParse(ProductTurnOrderPerfectQualityImportExcelVo.class)
.from(file.getInputStream())
// 指定数据区域
.opsSheet(0, 1, 0)
// 自定义列映射
.opsColumn()
// 强制输入字符串, 且不能为空
.field("A", "cumulativeSales", "累计销量").asInt().done()
.field("B", "cumulativeCustomerComplaints", "累计客诉量").asInt().done()
.field("C", "cumulativeCustomerComplaintRate", "累计客诉率(%)").asBigDecimal().done()
.field("D", "reciewScore", "reciew评分").asBigDecimal().done()
.field("E", "cumulativeReturns", "累计退货量").asInt().done()
.field("F", "cumulativeReturnRate", "累计退货率(%)").asBigDecimal().done()
.field("G", "questionCategoryOne", "问题分类_1").asString().done()
.field("H", "questionCategoryTwo", "问题分类_2").asString().done()
.field("I", "questionCategoryThree", "问题分类_3").asString().done()
.field("J", "image1", "图片").asImg().done()
.field("K", "image2", "图片").asImg().done()
.field("L", "image3", "图片").asImg().done()
.field("M", "image4", "图片").asImg().done()
.field("N", "image5", "图片").asImg().done()
.done()
.callBack((row, index) -> {
// 行回调, 可以在这里改数据
System.out.println("当前是第:" + index + " 数据是: " + row);
})
.parse();
映射对象中图片字段为
@ExcelProperty(value = "图片_5") private byte[] image5;
最后就是通过OSS工具上传到阿里云服务器,结束。
业务代码中抛出的异常为自定义异常,可以自己创建或直接打印在控制台。