5

POI バージョン 3.2 の使用

問題: 画像のサイズを元の高さと幅に変更できません。Excelファイルに画像を追加できます。

画像を追加した後、picture.resize(); を呼び出します。方法。

後で、sheet.setColumnWidth(columnindex, columnwidth) を呼び出して Excel ファイルの列のサイズを変更すると、画像は元の高さ/幅を失います。

助けてください。

4

4 に答える 4

11

写真が固定されている列を呼び出していない場合でも、picture.resize()後まで呼び出してはいけません。sheet.autoSizeColumn(i)autoSizeColumn(i)

于 2011-08-26T13:04:25.750 に答える
4

カスタム フォントを使用した HSSFWorkbook で、ロゴを適切なサイズで表示するために次のことを行いました。

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_HEIGHT ... と LOGO_WIDTH .. を画像の必要なピクセルサイズに設定した場所。

結果の画像は元の比率ではなく、予想されるピクセル サイズでもありませんでした。そこで、予想されるサイズと現在のサイズの比率を使用し、それに応じて LOGO_WIDTH.. と LOGO_HEIGHT.. を調整しました。美しくはありませんが、機能します:/

Picture.resize()そして、その後電話しないでください。

Apache POIU Bug 52504を参照するか、このニュースグループの poi に関するディスカッションPicture.resize()と、画像を挿入するための POI クイック ガイドを参照してください。

更新: 現在のコードは次のようになります。元の画像は 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);
于 2012-05-10T14:46:26.437 に答える
0

setcolumnwidth()が完了した後、画像オブジェクトを保持して、最後にresize()を呼び出すべきではありませんか?

于 2009-07-15T21:38:18.167 に答える