Einfügen eines Bildes in eine Zelle

Einführung

Das exakte 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 gehörenden Zelle ausgerichtet bleibt. Aspose.Cells unterstützt dieses Szenario auf zwei komplementäre Arten:

  • Ansatz 1 — Platzieren eines schwebenden Bildes über einer Zelle. Fügen Sie dem Arbeitsblatt ein Picture hinzu, setzen Sie dessen setPlacement auf MOVE_AND_SIZE und passen Sie dessen Ankerzellen (setUpperLeftRow, setUpperLeftColumn, setLowerRightRow, setLowerRightColumn) so an, dass das Bild genau eine Zelle abdeckt.
  • Ansatz 2 — Direktes Einbetten eines Bildes in eine Zelle. Weisen Sie der Eigenschaft setEmbeddedImage der Zelle Bildbytes zu. Das Bild skaliert automatisch, 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 eingesetzt werden.

Ansatz 1: Bild über einer Zelle platzieren

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 Zellbereich 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. Damit ein schwebendes Bild genau eine Zelle abdeckt, müssen Sie:

  1. Das Bild mit Worksheet.getPictures().add(int row, int column, InputStream stream) hinzufügen, wodurch das neue Bild an der angegebenen Zelle verankert wird.
  2. Die vier Ankereigenschaften so setzen, dass das umgebende Rechteck des Bildes mit der Zielzelle übereinstimmt.
  3. Picture.setPlacement auf PlacementType.MOVE_AND_SIZE setzen, damit das Bild mit der darunterliegenden Zelle verschoben und in der Größe verändert wird, wenn der Benutzer die Spaltenbreite oder Zeilenhöhe ändert.

Das Bild an einer einzelnen Zelle verankern

Der Anker des Bildes wird durch vier nullbasierte Indexeigenschaften definiert:

  • setUpperLeftRow — der Zeilenindex der oberen Kante des Bildes.
  • setUpperLeftColumn — der Spaltenindex der linken Kante des Bildes.
  • setLowerRightRow — der Zeilenindex der unteren Kante des Bildes. Damit die untere Kante des Bildes am unteren Rand der Zeile r liegt, setzen Sie diesen Wert auf r + 1.
  • setLowerRightColumn — der Spaltenindex der rechten Kante des Bildes. Damit die rechte Kante des Bildes am rechten Rand der Spalte c liegt, setzen Sie diesen Wert auf c + 1.