#poi导出图片到excel,导出成功但是图片不显示,哪位大佬帮助一下
//写入图片
private static void writeImg(Workbook workbook, Sheet sheet, Row currentRow, String imgPath, int currentColumnIndex, SXSSFDrawing drawing) {
try {
URL url = new URL(imgPath);
BufferedImage image = ImageIO.read(url);
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
ImageIO.write(image, imgPath.substring(imgPath.lastIndexOf(".") + 1), byteArrayOut);
//判断图片后缀
int addPicture;
String hz = imgPath.substring(imgPath.lastIndexOf(".") + 1);
if("jpg".equals(hz)){
addPicture = workbook.addPicture(byteArrayOut.toByteArray(), workbook.PICTURE_TYPE_JPEG);
} else {
addPicture = workbook.addPicture(byteArrayOut.toByteArray(), workbook.PICTURE_TYPE_PNG);
}
ClientAnchor anchor = drawing.createAnchor( 50, 50, 50, 50, currentColumnIndex, currentRow.getRowNum(), currentColumnIndex + 1, currentRow.getRowNum() + 1);
//图片位置
// XSSFClientAnchor anchor = new XSSFClientAnchor(5, 5, 5, 5, currentColumnIndex, currentRow.getRowNum(), currentColumnIndex + 1,currentRow.getRowNum() + 1);
// anchor.setAnchorType(ClientAnchor.AnchorType.MOVE_AND_RESIZE);
drawing.createPicture(anchor, addPicture);
} catch (Exception e) {
e.printStackTrace();
}
}
图片及输出流都是没问题的,但是导出后图片就如下所示了
答案转自ChatGPT,希望有所帮助
可能是因为你使用的是SXSSFWorkbook,它是XSSFWorkbook的一种优化版本,可以在处理大量数据时提高性能,但它不能支持图片的导出。所以,如果你需要在Excel中插入图片,建议使用XSSFWorkbook。
另外,如果你已经确定使用XSSFWorkbook,但仍然无法显示图片,可以尝试以下几种方法:
请确保图片路径正确:可以使用绝对路径或相对路径指定图片路径。
请确保图片格式正确:Excel支持的图片格式包括PNG、JPG、BMP、GIF等。
请确保图片大小适当:如果图片大小超出了单元格的范围,可能会导致图片不显示或者显示不完整。可以尝试缩小图片尺寸。
请确保插入图片的方式正确:使用drawing.createPicture()方法插入图片时,需要确保插入的位置正确。
在插入图片之前,需要先创建绘图对象:可以使用sheet.createDrawingPatriarch()方法创建绘图对象。
/**
* @author vvirster@163.com
* @date 2022-11-24 15:28
* @description 复杂表格表头单元格
**/
public class CellModel {
/**
* 表头列名称
*/
private String cellName;
/**
* 起始行
*/
private Integer startRow;
/**
* 结束行
*/
private Integer endRow;
/**
* 起始列
*/
private Integer startColumn;
/**
* 结束列
*/
private Integer endColumn;
/**
* 设置单元格宽度
*/
private Integer width;
// setter getter省略。。
}