本文介绍: easyexcel虽然使用很方便,但是很多地方也无法高度定制化。明确表示暂时不支持解析带图片的Excel。java中easyexcel导入导出带有图片的Excel(main方法方式),web方式详见另一篇。内嵌图片是WPS自定义的函数,POI读取不到,实际中不要用内嵌图片即可或者直接用微软office。由于电脑音频问题,视频暂时没有解说声音, 回头重新补上。
简述
java中easyexcel导入导出带有图片的Excel(main方法方式),web方式详见另一篇
前情提示
easyexcel虽然使用很方便,但是很多地方也无法高度定制化。明确表示暂时不支持解析带图片的Excel
一说
- 部分截图、链接等因过期、更换域名、MD语法等可能不显示,可联系反馈(备注好博文地址),谢谢❤
- 带有
#号、删除线、不操作、不执行
字样的为提示或者备份bash,实际不执行 - 如果无法下载、无法复制,请评论后留言即可。收到消息后会第一时间回复~
- 知识付费,1对1技术支持:开放技术支持 | 需求墙 · 语雀
有账号的朋友,可以点个赞或者评论两句哦,评论后会获得积分奖励~
视频代码
https://www.ixigua.com/7306755691145298471
office工具使用注意
内嵌图片是WPS自定义的函数,POI读取不到,实际中不要用内嵌图片即可或者直接用微软office
历史视频
Java中Excel操作宏实现下拉菜单多选:https://www.ixigua.com/7304510132812153385
代码示例
package com.pgz.test.eetpic;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.UUID;
import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.ExcelPicUtil;
import cn.hutool.poi.excel.ExcelUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.read.metadata.ReadSheet;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.PictureData;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* easy excel图片读取示例,main方法方式,web方式详见另外一个
*/
@Slf4j
public class EETest {
public static void main(String[] args) throws Exception {
String fileName = "/Users/janeyork/Downloads/487_1.xlsx";
InputStream fis = new FileInputStream(fileName);
AnalysisEventListener listener = new UserInfoDataListener();
ExcelReader excelReader = EasyExcel.read(fis, ExcelData.class, listener).build();
ReadSheet readSheet = EasyExcel.readSheet(0).build();
ReadSheet readSheet2 = EasyExcel.readSheet(1).build();
excelReader.read(readSheet);
// 这里千万别忘记关闭,读的时候会创建临时文件,到时磁盘会崩的
excelReader.finish();
List<ExcelData> list = new ArrayList<>();
InputStream fis2 = new FileInputStream(fileName);
cn.hutool.poi.excel.ExcelReader reader = ExcelUtil.getReader(fis2);
//key是图片位置,row_cell的格式;value是图片数据
Map<String, PictureData> picMap = ExcelPicUtil.getPicMap(reader.getWorkbook(), 0);
log.info("图片:" + picMap.size());
//这里只关心行数,把数据装到Bean里面去,也可用map在循环中取获取
picMap.forEach((k, v) -> {
log.info("----------------------");
String[] split = k.split(StrUtil.UNDERLINE);
Integer index = Integer.valueOf(split[0]);
log.info("图片:" + k);
log.info("图片:" + v);
String mimeType = v.getMimeType();
String[] mimeTypes = mimeType.split(StrUtil.SLASH);
log.info("mimeType:" + mimeType);
String fileName2 = "/Users/janeyork/Downloads/eetpictmp/"+UUID.randomUUID() + "." + mimeTypes[1];
// 模拟上传
FileUtil.writeBytes(v.getData(), fileName2);
// 然后将上传成功图片路径,赋值给实体类,然后调用service插入数据库即可
});
}
}
原文地址:https://blog.csdn.net/qq_31708763/article/details/134688373
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_37876.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。