*
Map<String, Object> map1 = new HashMap<>();
map1.put("image",new File(TestFileUtil.getPath() + "converter" + File.separator + "50.jpg"));
excelWriter.fill(map1, writeSheet);
这是模板 下面是填充后的效果
*
Map<String, Object> map1 = new HashMap<>();
map1.put("image",new File(TestFileUtil.getPath() + "converter" + File.separator + "50.jpg"));
excelWriter.fill(map1, writeSheet);
这是模板 下面是填充后的效果
老铁,能不能一个单元格填充多张图片啊,求教.
老铁,能不能一个单元格填充多张图片啊,求教.
老铁,能不能一个单元格填充多张图片啊,求教.
你是模板填充还是,直接单元格写入
老铁,能不能一个单元格填充多张图片啊,求教.
你是模板填充还是,直接单元格写入 你试下自定义拦截看看 https://www.yuque.com/easyexcel/faq/wpedtd `/**
- 图片修改拦截器
- @author JiaJu Zhuang
- @date 2020/7/23 10:20
上午
**/ public class ImageModifyHandler implements CellWriteHandler {
@Override
public void beforeCellCreate(WriteSheetHolder writeSheetHolder,
WriteTableHolder writeTableHolder, Row row,
Head head, Integer columnIndex, Integer relativeRowIndex, Boolean isHead) {
}
@Override
public void afterCellCreate(WriteSheetHolder writeSheetHolder,
WriteTableHolder writeTableHolder, Cell cell, Head head,
Integer relativeRowIndex, Boolean isHead) {
}
@Override
public void afterCellDataConverted(WriteSheetHolder writeSheetHolder,
WriteTableHolder writeTableHolder, CellData cellData,
Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
// 在 数据转换成功后 ,修改第一列 当然这里也可以根据其他判断 然后不是头 就把类型设置成空 这样easyexcel 不会去处理该单元格
if (head.getColumnIndex() != 1 || isHead) {
return;
}
cellData.setType(CellDataTypeEnum.EMPTY);
}
@Override
public void afterCellDispose(WriteSheetHolder writeSheetHolder,
WriteTableHolder writeTableHolder, List<CellData> cellDataList, Cell cell,
Head head, Integer relativeRowIndex, Boolean isHead) {
// 在 单元格写入完毕后 ,自己填充图片
if (head.getColumnIndex() != 1 || isHead || cellDataList.isEmpty()) {
return;
}
Sheet sheet = cell.getSheet();
// cellDataList 是list的原因是 填充的情况下 可能会多个写到一个单元格 但是如果普通写入 一定只有一个
int index = sheet.getWorkbook().addPicture(cellDataList.get(0).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() + 1);
anchor.setRow1(cell.getRowIndex());
anchor.setRow2(cell.getRowIndex() + 1);
// 设置图片可以随着单元格移动
anchor.setAnchorType(AnchorType.MOVE_AND_RESIZE);
drawing.createPicture(anchor, index);
}
}`
// 重点是registerWriteHandler 其他的根据自己来 EasyExcel.write(fileName, ImageData.class).registerWriteHandler(new ImageModifyHandler()).sheet().doWrite(list);
老哥可以贴一下代码嘛 怎么解决这个问题的
就在这块设置的
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() + 1); anchor.setRow1(cell.getRowIndex()); anchor.setRow2(cell.getRowIndex() + 1); // 设置图片可以随着单元格移动 anchor.setAnchorType(AnchorType.MOVE_AND_RESIZE); drawing.createPicture(anchor, index);
请问你的图片是可以这样直接填充到模板吗?我的试了半天也不行,我没自定义拦截器
Map<String, Object> map1 = new HashMap<>();
map1.put("image",new File(TestFileUtil.getPath() + "converter" + File.separator + "50.jpg"));
excelWriter.fill(map1, writeSheet);
就在这块设置的
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() + 1); anchor.setRow1(cell.getRowIndex()); anchor.setRow2(cell.getRowIndex() + 1); // 设置图片可以随着单元格移动 anchor.setAnchorType(AnchorType.MOVE_AND_RESIZE); drawing.createPicture(anchor, index);
还有一个问题请问下,你合并单元格时,图片是怎么铺满单元格的?我在你发的链接里看了,没找到解决方案。可以提供一下代码么?谢谢!
找到原因了。不支持07版excel... 只支持03版
是不用Map了填充了吗?
在模板填充时,对合并单元进行多张图片填充,默认操作的都是合并单元格的第一个单元格,如何将图片分散到整个合并单元格中
请问你的图片是可以这样直接填充到模板吗?我的试了半天也不行,我没自定义拦截器
Map<String, Object> map1 = new HashMap<>(); map1.put("image",new File(TestFileUtil.getPath() + "converter" + File.separator + "50.jpg")); excelWriter.fill(map1, writeSheet);
我的也不能填充进去
就在这块设置的
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() + 1); anchor.setRow1(cell.getRowIndex()); anchor.setRow2(cell.getRowIndex() + 1); // 设置图片可以随着单元格移动 anchor.setAnchorType(AnchorType.MOVE_AND_RESIZE); drawing.createPicture(anchor, index);
你好 这个有个问题 会新增一个图片 盖住原来小的 如果原来是大的 修改成小的 就很明显啦 如何解决只保留修改后图片