Apache POI所有图像插入到Excel由于一个损坏的图像而失败

时间:2016-07-26 07:25:14

标签: java apache-poi

我准备了一个代码,它从数据库字段中获取字节,将图像存储为BLOB,并使用 apache poi version 3.9

将其插入到excel文件中

此代码工作正常,图像被拉出并锚定到大多数情况下指定的列和行。

以下是代码:

Blob img = ads.getPhoto();
      byte[] imageByte = ads.getPhoto().getBytes(1, (int) img.length());
      if (imageByte.length > 10) {
      try {
       int picId = workbook.addPicture(imageByte, workbook.PICTURE_TYPE_JPEG);
       CreationHelper helper = workbook.getCreationHelper();
       Drawing drawing = sheet.createDrawingPatriarch();
       ClientAnchor anchor = helper.createClientAnchor();
       anchor.setCol1(2);
       anchor.setCol2(3);
       anchor.setRow1(rowId);
       anchor.setRow2(rowId + 1);
       Picture pict = drawing.createPicture(anchor, picId);
       System.out.println("TEST PRINT");
     } catch (Exception ex) {
        ex.printStackTrace();
     }

现在我缩小到一个导致问题的图像。 blob对我来说很好看。但是,当插入所有图像以及此特定图像时,将删除所有图像并打开Excel并显示错误消息:"文件错误:数据可能已丢失"

绘图族长中没有任何图像显示在Excel中。 如果我跳过此特定行,则图像在excel中显示正常。它只是这个特殊的形象。

任何人都可以帮我解决其中一个图纸中是否有错误的问题,如果找到则跳过它,以便剩下的图像保留,只删除此图像。

任何有关此建议都会有所帮助。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

切换到XSSF适用于此方案。显示损坏的图像,图像图标无效。 而其他所有人仍然适当地填充。

但是使用poi.3.15,XSSF的表现非常差。