help wanted
Metriche repository
- Star
- (33.728 star)
- Metriche merge PR
- (Nessuna PR mergiata in 30 g)
Descrizione
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[]类型会自动转换成图片 但是 却是悬浮的 不能跟随我所在的列移动 所以我自定义图片转换的以后 这个悬浮的图片依旧在 同时我自定的图片也是带出来了的