POIのバージョンの使用3.2POI 3.2画像の高さ/幅の制御
問題:元の高さと幅に画像のサイズを変更できません。 イメージをExcelファイルに追加できます。
イメージを追加した後、私はpicture.resize()を呼び出します。方法。
後で sheet.setColumnWidth(columnindex、columnwidth) を呼び出すと、Excelファイルの列のサイズが変更され、画像の元の高さ/幅が失われます。
助けてください。
POIのバージョンの使用3.2POI 3.2画像の高さ/幅の制御
問題:元の高さと幅に画像のサイズを変更できません。 イメージをExcelファイルに追加できます。
イメージを追加した後、私はpicture.resize()を呼び出します。方法。
後で sheet.setColumnWidth(columnindex、columnwidth) を呼び出すと、Excelファイルの列のサイズが変更され、画像の元の高さ/幅が失われます。
助けてください。
あなたはsetcolumnwidth()の処理が完了した後、画像オブジェクトを保持してresize()を最後まで呼び出してはいけませんか?
画像が固定されている列にautoSizeColumn(i)
を呼び出していない場合でも、sheet.autoSizeColumn(i)
の後になるまで、picture.resize()
に電話しないでください。
:
私が欲しかったピクセルサイズにLOGO_HEIGHT ...とLOGO_WIDTH ..を設定CreationHelper helper = wb.getCreationHelper();
Drawing drawing = sheet.createDrawingPatriarch();
ClientAnchor anchor = helper.createClientAnchor();
anchor.setDx1(LOGO_MARGIN * XSSFShape.EMU_PER_PIXEL);
anchor.setDx2(LOGO_WIDTH_IN_FUNNY_POI_FORMAT * XSSFShape.EMU_PER_PIXEL);
anchor.setDy1(LOGO_MARGIN * XSSFShape.EMU_PER_PIXEL);
anchor.setDy2(LOGO_HEIGHT_IN_FUNNY_POI_FORMAT * XSSFShape.EMU_PER_PIXEL);
drawing.createPicture(anchor, pictureIndex);
画像の
結果の画像は元の比率ではなく、予想されるピクセルサイズではありませんでした。 私は予想されるサイズ/現在のサイズの比率を使用し、それに応じてLOGO_WIDTH ..とLOGO_HEIGHT ..を調整しました。美しくはありませんが動作します。/
その後、Picture.resize()
に電話しないでください。
Apache POIU Bug 52504またはthis newsgroup discussion about poi Picture.resize()
およびPOI quick guide for inserting picturesを参照してください。
更新:現在のコードは次のようになり、元の画像は2000x450です:
LOGO_MARGIN = 2;
int index = getLogoPictureIndex();
CreationHelper helper = this.wb.getCreationHelper();
Drawing drawing = this.sheet.createDrawingPatriarch();
ClientAnchor anchor = helper.createClientAnchor();
anchor.setDx1(LOGO_MARGIN * XSSFShape.EMU_PER_PIXEL);
anchor.setDy1(LOGO_MARGIN * XSSFShape.EMU_PER_PIXEL);
Picture pic = drawing.createPicture(anchor, index);
pic.resize(0.064);
良い解決策は、規模の引数を指定してリサイズ()関数を使用することです:そこ
double scale = 0.3;
Picture pict = drawing.createPicture(anchor, pictureIdx);
pict.resize(scale);
こんにちは、私は私はここで幾分似たような問題があると思う:http://stackoverflow.com/questions/28298947/npoi-images-created-in-foreach-loop-not-resizing-correctlyそしてあなたの "LOGO_MARGIN"と特に "IN_FUNNY_POI_FORMAT" - 部分を意味します。ドミニク – Dominik
@Dominik質問を見つけることができませんでしたが、現在使用されているコードを追加しました。LOGO_MARGIN = 2を使用し、後でpic.resizeを呼び出します:-) – flob
yeh、ちょうど私が...ダム。ご不便をお祈りください:) thx、しかし。 – Dominik