[alibaba/easyexcel]写Excel图片导出设置

2024-05-24 943 views
8

写Excel的时候,Excel里面如果有图片填充,希望可以设置图片跨行和跨列填充,最好能够在对象属性上面加注解设置值跨多少行和跨多少列。

回答

6

应用场景是什么?写到隔壁列干嘛

3

您好!        收到您的邮件非常高兴,我们这边在插入图片的时候需要跨列和跨行。应用场景如附件里面的地图图片。 我也下载easyexcel源码下来查看的一下,好像现在插入图片不管合并多少列多少行都是默认插入第一行的第一列。 现在插入图片不能灵活适应多行多列,如果能够有一个注解可以设置跨行和跨列,在没有加这个注解的情况下可以按照默认值插入, 如果加这个注解的话可以按照这个注解里面设置的跨多少行和多少列去插入,这样就能更加灵活的设置图片的位置。 所以提出小小意见,如果您觉得合理,希望能采纳,非常感谢。

9

可以设置图片的跨行跨列,参考以下设置

private void setImageValue(CellData cellData, Cell cell) { Sheet sheet = cell.getSheet(); int index = sheet.getWorkbook().addPicture(cellData.getImageValue(), HSSFWorkbook.PICTURE_TYPE_PNG); Drawing drawing = sheet.getDrawingPatriarch(); if (drawing == null) { drawing = sheet.createDrawingPatriarch(); } CreationHelper helper = sheet.getWorkbook().getCreationHelper(); ClientAnchor anchor = helper.createClientAnchor(); anchor.setDx1(0); anchor.setDx2(0); anchor.setDy1(0); anchor.setDy2(0); anchor.setCol1(cell.getColumnIndex()); //设置图片左上角所在列 anchor.setCol2(cell.getColumnIndex() + 4); //设置图片右下角所在列 anchor.setRow1(cell.getRowIndex()); //设置图片左上角所在行 anchor.setRow2(cell.getRowIndex() + 6); //设置图片右下角所在列 anchor.setAnchorType(ClientAnchor.AnchorType.DONT_MOVE_AND_RESIZE); drawing.createPicture(anchor, index); }

运行demo中的imageWrite( ) (注释掉其他类型的写,只留下一种),效果是这样的

O4%DW0MVC@1BD~U8J1@U0S9

5

您好!    非常感谢您的回复,这个代码我已经看过,不过这需要改变easyexcel已经封装好的代码,这样使用起来不灵活。如果能通过注解设置图片的跨行跨列那就更好。

4

您好,一个Excel里面如果有多张图片,每张图片需要的设置的跨行跨列不一样的情况下,这样设置实现起来也不灵活。

6

@13763099193
我尝试实现了下用注解来设置图片的位置,你看这跟你的需求一致吗? 代码在#1198

7

非常非常感谢,我查看过代码了,就是想要这也的效果。