现在网上有很多的POI导出方法,但是在导出时一直不能导出成功,所以考虑了下有可能是因为版本原因导致的。
大部分教程使用的都是 HSSFWorkbook,这个方法只能操作2003以下的版本,操作2007以上版本需要使用XSSFWorkbook
更改了方法之后,导出图片成功,以下是一些核心代码
Workbook wb = new XSSFWorkbook();
CreationHelper helper = wb.getCreationHelper();
Sheet sheet = wb.createSheet();
Drawing drawing = sheet.createDrawingPatriarch();
for (int i = 0; i <productToolList.size() ; i++) {//需要导出的数据列表
String productImage = productToolList.get(i).getProductImage();
InputStream is = new FileInputStream("图片路径");
byte[] bytes = IOUtils.toByteArray(is);
int pictureIdx = wb.addPicture(bytes, Workbook.PICTURE_TYPE_JPEG);
is.close();
ClientAnchor anchor = helper.createClientAnchor();
anchor.setDx1(0);
anchor.setDy1(0);
anchor.setDx2(0);
anchor.setDy2(0);
anchor.setCol1(0);
anchor.setRow1(i);
anchor.setCol2(1);
anchor.setRow2(i+1);
Picture pict = drawing.createPicture(anchor, pictureIdx);
Row row = sheet.createRow(i);
row.createCell(1).setCellValue(productToolList.get(i).getProductSku());
row.createCell(2).setCellValue(productToolList.get(i).getProductName());
row.createCell(3).setCellValue(productToolList.get(i).getProductNum().toString());
}
OutputStream fileOut = new FileOutputStream("需要导出的路径");
wb.write(fileOut);
fileOut.close();