我准备了一个代码,它从数据库字段中获取字节,将图像存储为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并显示错误消息: "File Error: Data May have been lost"
绘图族长中的所有图像都不会显示在Excel中 . 如果我跳过此特定行,则图像在Excel中显示正常 . 它只是这个特殊的形象 .
任何人都可以通过一种方法来帮助我检查其中一个图纸是否有错误,如果找到则跳过它,以便剩下的图像保留,只有这个图像被删除 .
任何有关此建议都会有所帮助 . 提前致谢 .
1 回答
切换到XSSF适用于此方案 . 显示损坏的图像,图像图标无效 . 而其他所有人仍然适当地填充 .
但是使用poi.3.15,XSSF的性能非常差 .