alibaba/easyexcel

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

Open

#4102 aperta il 3 apr 2025

Vedi su GitHub
 (0 commenti) (0 reazioni) (0 assegnatari)Java (7599 fork)batch import
help wanted

Metriche repository

Star
 (33.728 star)
Metriche merge PR
 (Nessuna PR mergiata in 30 g)

Descrizione

模板文件图 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;
    }

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

Guida contributor