16 Star 243 Fork 53

wangguanquan / eec

 / 详情

支持导入图片吗

待办的
创建于  
2024-02-22 10:06
暂无描述。

评论 (7)

xgc 创建了任务

EEC支持Path, File, URL, byte[], ByteBuffer, InputStream, base64 image string7种类型的Media,你可以使用Column#writeAsMedia()或者@MediaColumn注解来指定当前列类型为Media

public static class Pic {
    @ExcelColumn("地址")
    private String addr;
    @MediaColumn // 指定以Media形式导出
    private String url;
}

new Workbook()
    .addSheet(new ListSheet<>(Pic.randomTestData()).setRowHeight(100))
    .writeTo(Paths.get("F://"));

参考wiki

你说是导出,我说的是导入的场景,比如导入用户信息,excel中存在用户的人脸照片。看wiki里面只有这种方式,获取所有图片,就没办法把图片和人对应起来了
输入图片说明

Picture对象包含一个Dimension属性,使用它可以拿到该图片的位置,如果图片在单元格中只需要判断Dimension.firstRow == row.getRowNum()即可,你也可以将Dimension的firstRow和firstColumn进行简单处理(firstColumn << 24) | lastColumn得到一个long值,然后将这个long值做为key,Picture做为value值保存到Map中,获取的时候再次计算即可获对象Picture

本项目是直接复制github上的地址,所以wiki无法看到图片,你可以在https://github.com/wangguanquan/eec/wiki/看到原始文档

示例代码:

Sheet sheet = reader.sheet(0);
List<Drawings.Picture> pictures = sheet.listPictures();
Map<Long, List<Drawings.Picture>> map = Collections.emptyMap();
if (pictures != null) {
    // key: 单元格位置
    // value: 单元格包含的图片(可能为N张)
    map = pictures.stream().collect(Collectors.groupingBy(a -> ((long) a.getDimension().firstRow) << 24 | a.getDimension().firstColumn));
}
for (Iterator<org.ttzero.excel.reader.Row> iter = sheet.iterator(); iter.hasNext(); ) {
    org.ttzero.excel.reader.Row row = iter.next();
    
    // 已知第5列包含图片
    List<Drawings.Picture> picList = map.get((long) row.getRowNum() << 24 | 5); // <- 再次计算单元格位置 row.getRowNum获行, 5为列
    if (picList != null) {
        // TODO 业务处理
    }
    
    // 多个列包含图片,可以遍历
    for (int i = row.getFirstColumnIndex(), len = row.getLastColumnIndex(); i < len; i++) {
        List<Drawings.Picture> picList2 = map.get((long) row.getRowNum() << 24 | i + 1);
        if (picList2 != null) {
            // TODO 业务处理...
        }
    }
}

牛的,复制过来就能用,今天刚好有这个需求

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(3)
2334850 giteeclass 1713758700
Java
1
https://gitee.com/wangguanquan/eec.git
git@gitee.com:wangguanquan/eec.git
wangguanquan
eec
eec

搜索帮助

53164aa7 5694891 3bd8fe86 5694891