0

Java と apache poi を使用して、画像を Excel ワークブックに追加しています。小さいサイズの画像でも問題ありません。大きなサイズの画像を追加しようとすると。ログに不正な引数の例外が表示されます。それはポイが大きなイメージのアンカーを配置できないからだと思います。失敗するサイズや解像度を知っている人はいますか? サイズ1600x1200の.png画像でこれを行っています。私が言及したように、この方法は、100x100 ピクセル以上の小さな画像でうまく機能します。誰かが以前にこの問題を抱えていましたか?それを回避する方法。高解像度の画像を挿入する必要があります。画像は、Excel ドキュメントの大部分にまたがる必要があります。これは私が得るエラーメッセージです:

SEVERE: null java.lang.IllegalArgumentException: col2 は org.apache.poi.hssf.usermodel.HSSFClientAnchor.checkRange(HSSFClientAnchor.java:245) で 0 から 255 の間でなければなりません。 setCol2(HSSFClientAnchor.java:136) at org.apache.poi.hssf.usermodel.HSSFPicture.resize(HSSFPicture.java:100) at org.apache.poi.hssf.usermodel.HSSFPicture.resize(HSSFPicture.java:119)

私はそれを行うために次のコードを使用しています:

private HSSFSheet insertImageWithFilename(Workbook workbook, HSSFSheet sheet, int col, int    row,double scaling, String fileName)
{
    try
    {
        StringBuilder builder = new StringBuilder(45);
        builder.append(Configuration.getRoot().getInstallation().getDirectory());
        builder.append(File.separator).append(Configuration.getRoot().getInstallation().getPortalName());
        builder.append(File.separator).append(IMAGE_PATH);
        builder.append(File.separator).append(fileName);
        InputStream is = new FileInputStream(builder.toString());
        byte[] bytes = IOUtils.toByteArray(is);
        int pictureIdx = workbook.addPicture(bytes, Workbook.PICTURE_TYPE_PNG);
        CreationHelper helper = workbook.getCreationHelper();
        Drawing drawing = sheet.createDrawingPatriarch();
        ClientAnchor anchor = helper.createClientAnchor();
        anchor.setCol1(col);
        anchor.setRow1(row);
        anchor.setAnchorType(2);
        Picture pict = drawing.createPicture(anchor, pictureIdx);
        pict.resize();
        pict.resize(scaling);
    }
    catch (FileNotFoundException fnfe)
    {
        System.out.println("FileNotFoundException:" + fnfe.getMessage());
    }
    catch (IOException ioe)
    {
        System.out.println("IOException:" + ioe.getMessage());
    }
    return sheet;
}

編集: スケーリングには次の値があります: 0.1d. 返信ありがとうございます。

4

0 に答える 0