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. 返信ありがとうございます。