XSSFWorkbook中图像的大小不同

时间:2017-06-27 08:22:24

标签: java excel spring-boot xssf

我试图在下面的每张excel中插入一个徽标是代码段:

int numberOfSheets = wb.getNumberOfSheets();
for(int i=0;i<numberOfSheets;i++)
{
    XSSFSheet sheet = wb.getSheetAt(i);

    try {
        //insert a logoS
        String location = "/src/main/resources/logo/logo.jpg";
        InputStream is = new FileInputStream(location);
        byte[] bytes = IOUtils.toByteArray(is);
        int pictureIdx = wb.addPicture(bytes, Workbook.PICTURE_TYPE_JPEG);
        is.close();

        CreationHelper creationHelper = wb.getCreationHelper();
        Drawing drawing = sheet.createDrawingPatriarch();

        ClientAnchor anchor = creationHelper.createClientAnchor();
        anchor.setCol1(0);
        anchor.setRow1(0);
        Picture pict = drawing.createPicture(anchor, pictureIdx);
        pict.resize(3.0,3.0);
    } catch (FileNotFoundException e) {
        log.info("Problem in reading logo.jpg");
    } catch (IOException io) {
        log.info("Problem in reading logo.jpg");
    }
}

但结果却确实在每张纸上都添加了一张图片。我有2张excel,但问题是当我点击第二张时,图像会拉伸一点点。 我明确地调整了它的大小,如果我没有为调整大小设置任何数字,那么拉伸比率是可测量的。

我可以从XSSFPicture Document

获得什么
public void resize(double scaleX,double scaleY)

相对于当前大小调整图像大小。 请注意,此方法仅适用于具有默认字体大小的工作簿(Calibri 11pt for .xlsx)。如果更改了默认字体,则可以垂直或水平拉伸已调整大小的图像。

所以我的设置也是默认的,如上所述

1 个答案:

答案 0 :(得分:0)

通过将列大小设置为其默认值解决了问题,我设置了调整大小功能不起作用的列大小,但是如果我们将电子表格创建为默认值以及列和行大小,那么就不会有任何问题