3

我想创建一个带有动态徽标和动态图像列表的 Excel 文件。在 Excel 文件中创建文本部分非常适用于 jxls。但是我无法使用 jxls 在每一行中插入一个图像。

请问,有人给我建议吗?

先感谢您。

4

2 回答 2

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();
                    }
                }
            }
        }
于 2012-10-26T10:01:11.510 回答
0

我已经解决了这个问题。以下是提示: jx:each(items="persons" var="person" lastCell="G2" direction="DOWN")

jx:image(lastCell="F2" src="person.portrait")

希望对你有效。

于 2015-10-21T08:57:17.830 回答