alibaba/easyexcel

图片byte[]类型导出 与自定义的hanlder重复 也无法关闭

Open

#3.849 geöffnet am 21. Juni 2024

Auf GitHub ansehen
 (0 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)Java (7.599 Forks)batch import
help wanted

Repository-Metriken

Stars
 (33.728 Stars)
PR-Merge-Metriken
 (Keine gemergten PRs in 30 T)

Beschreibung

WriteHandler imageHandler = new ImageCellWriteHandler();

            EasyExcelFactory.write(response.getOutputStream()).head(TicketsExportVO.class)
                    .registerWriteHandler(imageHandler)
                    .sheet("工单").doWrite(exportVOList);

导出VO图片字段 @ApiModelProperty("附件") @ExcelProperty(value="附件") private byte[] concatenatedPathByte;

自定义的 handler @Override public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {

    // 检查是否为需要插入图片的单元格
    if ("concatenatedPathByte".equals(head.getFieldName()) && !isHead) {
        // 从cellDataList中获取图片数据
        if (cellDataList != null && !cellDataList.isEmpty()) {
            CellData cellData = cellDataList.get(0);
            byte[] imageBytes = (byte[]) cellData.getImageValue();
            insertImage(writeSheetHolder, cell, imageBytes);
        }
    }
}

private void insertImage(WriteSheetHolder writeSheetHolder, Cell cell, byte[] imageBytes) {
    if (imageBytes != null && imageBytes.length > 0) {
        Workbook workbook = writeSheetHolder.getSheet().getWorkbook();
        int pictureIdx = workbook.addPicture(imageBytes, Workbook.PICTURE_TYPE_PNG);

        Drawing<?> drawing = writeSheetHolder.getSheet().createDrawingPatriarch();
        ClientAnchor anchor = workbook.getCreationHelper().createClientAnchor();
        anchor.setCol1(cell.getColumnIndex());
        anchor.setRow1(cell.getRowIndex());

        Picture pict = drawing.createPicture(anchor, pictureIdx);
        pict.resize(1,2); // 自动调整大小以适应单元格
    }
}

byte[]类型会自动转换成图片 但是 却是悬浮的 不能跟随我所在的列移动 所以我自定义图片转换的以后 这个悬浮的图片依旧在 同时我自定的图片也是带出来了的

Contributor Guide