我想创建一个带有动态徽标和动态图像列表的 Excel 文件。在 Excel 文件中创建文本部分非常适用于 jxls。但是我无法使用 jxls 在每一行中插入一个图像。
请问,有人给我建议吗?
先感谢您。
我发现的唯一解决方案是使用 JXLS 创建 XLS 文件,并在创建工作簿后插入带有本机 POI 函数的图像,例如:
Workbook resultWorkbook = transformer.transformXLS(is, beans);
Iterator rowIter = resultWorkbook.getSheetAt(0).rowIterator();
while (rowIter.hasNext()){
HSSFRow row = (HSSFRow) rowIter.next();
Iterator cellIter = row.cellIterator();
while (cellIter.hasNext()){
HSSFCell cell = (HSSFCell) cellIter.next();
final String IMG_PREFIX = "#IMG#";
if(cell.toString().startsWith(IMG_PREFIX)){
String cellValue = cell.toString();
cell.setCellValue("");
String imagePath = cellValue.replaceFirst(IMG_PREFIX, "");
File imageFile = new File(imagePath);
if(imageFile.exists()){
FileInputStream isi = new FileInputStream(imageFile);
ImageTools imageTools = new ImageTools();
byte[] imgBytes = imageTools.resizeImage(isi, 100);
int pictureIdx = resultWorkbook.addPicture(imgBytes, Workbook.PICTURE_TYPE_JPEG);
CreationHelper helper = resultWorkbook.getCreationHelper();
Drawing drawing = resultWorkbook.getSheetAt(0).createDrawingPatriarch();
ClientAnchor anchor = helper.createClientAnchor();
anchor.setCol1(cell.getColumnIndex());
anchor.setRow1(cell.getRowIndex());
Picture pict = drawing.createPicture(anchor, pictureIdx);
pict.resize();
isi.close();
}
}
}
}
我已经解决了这个问题。以下是提示:
jx:each(items="persons" var="person" lastCell="G2" direction="DOWN")
jx:image(lastCell="F2" src="person.portrait")
希望对你有效。