セルに画像を挿入する

Introduction

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

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

Approach 1: Place a Picture Over a Cell

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

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

Anchoring the Picture to a Single Cell

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

  • picture.upperLeftRow — 画像の上端の行インデックス。
  • picture.upperLeftColumn — 画像の左端の列インデックス。
  • picture.lowerRightRow — 画像の下端の行インデックス。画像の下端を行 r の下に配置するには、これを r + 1 に設定します。
  • picture.lowerRightColumn — 画像の右端の列インデックス。画像の右端を列 c の右に配置するには、これを c + 1 に設定します。