セルへの画像の挿入

はじめに

ビジュアルレポート、製品カタログ、社員ディレクトリ、ダッシュボード、在庫リストとして機能するスプレッドシートを設計する際、画像を単一のセルにぴったり合わせることは一般的な要件です。多くのセルにわたって画像を伸ばしたり、ワークシート上に緩く配置したりする代わりに、所有するセルと整列するクリーンなセル紐づきの画像が必要になる場合があります。 Aspose.Cells はこのシナリオを 2 つの補完的な方法でサポートします。

  • 方法 1 — フローティング画像をセル上に配置する。 Picture をワークシートに追加し、その Placement を MoveAndSize に設定し、アンカーセル (UpperLeftRow、UpperLeftColumn、LowerRightRow、LowerRightColumn) を調整して、画像がちょうど 1 つのセルを覆うようにします。
  • 方法 2 — 画像をセルに直接埋め込む。 画像のバイト列をセルの EmbeddedImage プロパティに割り当てます。画像はセルの表示領域に合わせて自動的に拡大縮小され、セルと一緒に移動します。 この記事の残りでは両方の方法を順に説明し、関連する API を解説し、コードでの使用方法を示します。

方法 1: セル上に画像を配置する

フローティング画像はワークシートの描画レイヤーに存在する Picture オブジェクトです。単一セルの一部ではありませんが、セル範囲にアンカーされます。画像のアンカーセル (左上隅と右下隅) がワークシート上でのその視覚的な範囲を決定します。デフォルトでは、新しく追加された画像は複数のセルにまたがります。 フローティング画像を ちょうど 1 つのセル を覆うようにするには、次の手順が必要です。

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

単一セルへの画像のアンカー

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

  • picture.setUpperLeftRow(int) — 画像の上端の行インデックス。
  • picture.setUpperLeftColumn(int) — 画像の左端の列インデックス。
  • picture.setLowerRightRow(int) — 画像の下端の行インデックス。画像の下端を行 r の下端に配置するには、これを r + 1 に設定します。
  • picture.setLowerRightColumn(int) — 画像の右端の列インデックス。画像の右端を列 c の右端に配置するには、これを c + 1 に設定します。