通过Apache POI将图像插入到excel文件中,但不显示

我在linux上有一个gwt web应用程序。在服务器端,我试图通过Apache poi 3.10插入一些图像到excel文件。

我从数据库中获取图像文件的inputstream并将其发送到现有的excel文件。 代码是:

Drawing patriarch = null; private void addImages(InputStream in, HSSFWorkbook requestReport, HSSFSheet sheet, int row, int col) throws IOException { CreationHelper helper = requestReport.getCreationHelper(); ClientAnchor anchor = helper.createClientAnchor(); byte[] bytes = IOUtils.toByteArray(in); int pictureIndex = requestReport.addPicture(bytes, HSSFWorkbook.PICTURE_TYPE_PNG); in.close(); if (patriarch == null) { patriarch = sheet.createDrawingPatriarch(); } anchor.setAnchorType(2); anchor.setRow1(row); anchor.setCol1(col); Picture picture = patriarch.createPicture(anchor, pictureIndex); picture.resize(); picture.setLineStyle(HSSFPicture.LINESTYLE_DASHDOTGEL); } 

在这种情况下,我从数据库中获取Inputstream,在picture.resize()上得到NoSuchElementException。

另一方面,如果我从磁盘使用图像插入,没有错误,图像不显示。

in = new FileInputStream(“/ test.jpeg”)

任何帮助,将不胜感激。

磁盘映像不会显示,因为您没有在锚点中设置第二列和第二行。 你应该添加:

 anchor.setRow2(row + 1); anchor.setCol2(col + 1); 

我不知道为什么你的数据库inputstream给出错误的原因是什么。 错误提示inputstream是空的(不包含数据),但原因不能从你的post确定。