Einfügen eines Bildes in eine Zelle

Introduction

Das genaue Anpassen eines Bildes an eine einzelne Zelle ist eine häufige Anforderung beim Entwerfen von Tabellenkalkulationen, die als visuelle Berichte, Produktkataloge, Mitarbeiterverzeichnisse, Dashboards oder Inventarlisten dienen. Anstatt ein Bild über viele Zellen zu spannen oder es lose auf einem Arbeitsblatt zu platzieren, möchten Sie möglicherweise ein sauberes, zellgebundenes Bild, das mit der ihm zugeordneten Zelle ausgerichtet bleibt. Aspose.Cells unterstützt dieses Szenario auf zwei komplementäre Arten:

  • Ansatz 1 — Platzieren Sie ein schwebendes Bild über einer Zelle. Fügen Sie dem Arbeitsblatt eine Picture hinzu, setzen Sie deren Placement auf MoveAndSize, und passen Sie die Ankerzellen (UpperLeftRow, UpperLeftColumn, LowerRightRow, LowerRightColumn) so an, dass das Bild genau eine Zelle abdeckt.
  • Ansatz 2 — Betten Sie ein Bild direkt in eine Zelle ein. Weisen Sie Bild-Bytes der Eigenschaft EmbeddedImage der Zelle zu. Das Bild wird automatisch skaliert, um in den Anzeigebereich der Zelle zu passen, und wandert mit der Zelle mit. Der Rest dieses Artikels führt durch beide Ansätze, erläutert die relevanten APIs und zeigt, wie sie im Code verwendet werden.

Approach 1: Place a Picture Over a Cell

Ein schwebendes Bild ist ein Picture-Objekt, das sich auf der Zeichnungsebene des Arbeitsblatts befindet. Obwohl es nicht Teil einer einzelnen Zelle ist, ist es an einen Zellenbereich verankert. Die Ankerzellen des Bildes — seine obere linke und untere rechte Ecke — bestimmen seine visuelle Ausdehnung auf dem Arbeitsblatt. Standardmäßig erstreckt sich ein neu hinzugefügtes Bild über mehrere Zellen. Um ein schwebendes Bild so zu platzieren, dass es genau eine Zelle abdeckt, müssen Sie:

  1. Fügen Sie das Bild mit worksheet.getPictures().add(int row, int column, InputStream stream) hinzu, wodurch das neue Bild an der angegebenen Zelle verankert wird.
  2. Legen Sie die vier Anker-Eigenschaften so fest, dass das umschließende Rechteck des Bildes mit der Zielzelle übereinstimmt.
  3. Setzen Sie picture.setPlacement(PlacementType.MOVE_AND_SIZE), damit sich das Bild mit der darunter liegenden Zelle mitbewegt und seine Größe ändert, wenn der Benutzer die Spaltenbreite oder Zeilenhöhe ändert.

Anchoring the Picture to a Single Cell

Der Anker des Bildes wird durch vier nullbasierte Indexeigenschaften definiert:

  • picture.setUpperLeftRow(int) — der Zeilenindex der Oberkante des Bildes.
  • picture.setUpperLeftColumn(int) — der Spaltenindex der linken Kante des Bildes.
  • picture.setLowerRightRow(int) — der Zeilenindex der Unterkante des Bildes. Damit die Unterkante des Bildes am unteren Rand der Zeile r sitzt, setzen Sie diesen auf r + 1.
  • picture.setLowerRightColumn(int) — der Spaltenindex der rechten Kante des Bildes. Damit die rechte Kante des Bildes am rechten Rand der Spalte c sitzt, setzen Sie diesen auf c + 1. Um das Bild beispielsweise genau in Zelle C6 (Zeilenindex 5, Spaltenindex 2) einzupassen, setzen Sie UpperLeftRow = 5, UpperLeftColumn = 2, LowerRightRow = 6 und LowerRightColumn = 3.