動的なロゴと動的な画像のリストを含む Excel ファイルを作成したいと考えています。Excel ファイルでのテキスト パーツの作成は、jxls でうまく機能します。しかし、jxls を使用して各行に 1 つの画像を挿入することはできません。
誰か私にアドバイスをください。
前もって感謝します。
私が見つけた唯一の解決策は、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")
それがあなたのために働くことを願っています。