alibaba/easyexcel

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

Open

#4102 opened on Apr 3, 2025

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

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