alibaba/easyexcel

使用模板填充时,模板中的图片变形拉升了

Open

#4,102 opened on Apr 3, 2025

View on GitHub
 (0 comments) (0 reactions) (0 assignees)Java (7,599 forks)batch import
help wanted

Repository metrics

Stars
 (33,728 stars)
PR merge metrics
 (No merged PRs in 30d)

Description

模板文件图 Image

结果文件图 Image

测试代码:

@Test
    public void test() {
        // 方案1
        try (ExcelWriter excelWriter = EasyExcel.write("C:\\Users\\DXM-0407\\Desktop\\新建 XLSX 工作表.xlsx").withTemplate("C:\\Users\\DXM-0407\\Desktop\\2f357a2c414f4dfa97ab6af5eddb1e81.xlsx").build()) {
            WriteSheet writeSheet = EasyExcel.writerSheet().build();
            // 直接写入数据
            excelWriter.fill(data(), new FillConfig(WriteDirectionEnum.VERTICAL, true, true, true), writeSheet);

            // 写入list之前的数据
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("date", "2019年10月9日13:28:28");
            excelWriter.fill(map, writeSheet);

            // list 后面还有个统计 想办法手动写入
            // 这里偷懒直接用list 也可以用对象
            List<List<String>> totalListList = ListUtils.newArrayList();
            List<String> totalList = ListUtils.newArrayList();
            totalListList.add(totalList);
            totalList.add(null);
            totalList.add(null);
            totalList.add(null);
            // 第四列
            totalList.add("统计:1000");
            // 这里是write 别和fill 搞错了
            excelWriter.write(totalListList, writeSheet);
            // 总体上写法比较复杂 但是也没有想到好的版本 异步的去写入excel 不支持行的删除和移动,也不支持备注这种的写入,所以也排除了可以
            // 新建一个 然后一点点复制过来的方案,最后导致list需要新增行的时候,后面的列的数据没法后移,后续会继续想想解决方案
        }
    }
    private List<Map<String, Object>> data() {
        List<Map<String, Object>> maps = Lists.newArrayList();
        for (int i = 0; i < 10; i++) {
            Map<String, Object> map = Maps.newHashMap();
            map.put("name", String.valueOf(i));
            map.put("number", String.valueOf(i + i));
            maps.add(map);
        }
        return maps;
    }

这里发现,当单元格的行高不一致时,就会造成图片的变形。想请问下造成图片变形的原因是什么,能否避免这个问题?

Contributor guide