セルへの画像の挿入

Introduction

1つのセルにぴったりと画像を合わせることは、ビジュアルレポート、商品カタログ、社員ディレクトリ、ダッシュボード、在庫リストなどとして機能するスプレッドシートをデザインする際によく必要となります。多くのセルにまたがって画像を引き伸ばしたり、ワークシート上に緩く配置したりするのではなく、所有するセルと整合性が保たれる、クリーンでセルに紐付けられた画像が必要になることがあります。 Aspose.Cells では、このシナリオを以下の2つの補完的な方法でサポートしています。

  • 方法1 — セル上にフローティング画像を配置する。 Picture をワークシートに追加し、その Placement を MOVE_AND_SIZE に設定し、セル範囲を覆うようにアンカーセル(getUpperLeftRow、getUpperLeftColumn、getLowerRightRow、getLowerRightColumn)を調整します。
  • 方法2 — 画像をセルに直接埋め込む。 画像のバイト列をセルの getEmbeddedImage() セッターに代入します。画像は表示領域に合わせて自動的に拡大縮小され、セルと一緒に移動します。 この記事の残りの部分では、両方の方法について解説し、関連する API を説明し、コードでの使用方法を示します。

Approach 1: Place a Picture Over a Cell

フローティング画像は、ワークシートの描画レイヤーに存在する Picture オブジェクトです。単一のセルの一部ではありませんが、セル範囲にアンカーされています。画像のアンカーセル(左上と右下の角)は、ワークシート上での視覚的な範囲を決定します。既定では、追加されたばかりの画像は複数のセルにまたがります。 フローティング画像をちょうど1つのセルに収めるには、以下を行う必要があります。

  1. Worksheet.getPictures().add(int row, int column, InputStream stream) を使用して画像を追加し、新しい画像を指定されたセルにアンカーします。
  2. 4つのアンカー プロパティを設定し、画像の境界矩形が対象のセルと一致するようにします。
  3. Picture.setPlacement() を PlacementType.MOVE_AND_SIZE に設定し、ユーザーが列幅や行の高さを変更したときに、基になるセルと共に画像が移動およびサイズ変更されるようにします。

Anchoring the Picture to a Single Cell

画像のアンカーは、4つのゼロベースのインデックス プロパティによって定義されます。

  • Picture.getUpperLeftRow() — 画像の上端の行インデックス。
  • Picture.getUpperLeftColumn() — 画像の左端の列インデックス。
  • Picture.getLowerRightRow() — 画像の下端の行インデックス。画像の下端を行 r の下部に配置する場合、r + 1 に設定します。
  • Picture.getLowerRightColumn() — 画像の右端の列インデックス。画像の右端を列 c の右側に配置する場合、c + 1 に設定します。