Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
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 strecken oder es lose auf einem Arbeitsblatt zu platzieren, möchten Sie möglicherweise ein sauberes, zellgebundenes Bild, das mit der Zelle, der es gehört, ausgerichtet bleibt. Aspose.Cells unterstützt dieses Szenario auf zwei komplementäre Arten:
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.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, erklärt die relevanten APIs und zeigt, wie sie im Code verwendet werden.Ein schwebendes Bild ist ein Picture-Objekt, das auf der Zeichenebene des Arbeitsblatts lebt. 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 dessen visuelle Ausdehnung auf dem Arbeitsblatt. Standardmäßig erstreckt sich ein neu hinzugefügtes Bild über mehrere Zellen.
Um ein schwebendes Bild genau eine Zelle abdecken zu lassen, müssen Sie:
worksheet.pictures.add(row, column, stream) hinzufügen, was das neue Bild an die angegebene Zelle verankert.picture.placement auf PlacementType.MoveAndSize setzen, damit sich das Bild mit der darunter liegenden Zelle bewegt und seine Größe ändert, wenn der Benutzer die Spaltenbreite oder Zeilenhöhe ändert.Der Anker des Bildes wird durch vier nullbasierte Index-Eigenschaften definiert:
picture.upperLeftRow — der Zeilenindex der Oberkante des Bildes.picture.upperLeftColumn — der Spaltenindex der linken Kante des Bildes.picture.lowerRightRow — der Zeilenindex der Unterkante des Bildes. Damit die Unterkante des Bildes am unteren Rand der Zeile r sitzt, setzen Sie dies auf r + 1.picture.lowerRightColumn — der Spaltenindex der rechten Kante des Bildes. Damit die rechte Kante des Bildes am rechten Rand der Spalte c sitzt, setzen Sie dies auf c + 1.Zeilen- und Spaltenindizes in Aspose.Cells sind nullbasiert. Zelle C6 hat den Zeilenindex 5 und den Spaltenindex 2. Off-by-One-Fehler beim unteren rechten Anker sind die häufigste Ursache für Bilder, die scheinbar in eine benachbarte Zelle hineinragen.
picture.placement ist eine Aufzählung vom Typ PlacementType, die steuert, wie sich das Bild verhält, wenn der Benutzer die Zeile oder Spalte darunter in der Größe ändert. Der empfohlene Wert für ein Einzelzellbild ist PlacementType.MoveAndSize, was bewirkt, dass sich das Bild gemeinsam mit seiner darunter liegenden Zelle bewegt und seine Größe ändert und so die genaue Anpassung beibehält.
Workbook (oder öffnen Sie eine vorhandene).Worksheet über workbook.worksheets[0] zu.worksheet.pictures.add(5, 2, stream) auf, um ein an Zelle C6 verankertes Bild hinzuzufügen. Erfassen Sie die zurückgegebene Picture-Referenz.upperLeftRow = 5, upperLeftColumn = 2, lowerRightRow = 6, lowerRightColumn = 3.picture.placement = PlacementType.MoveAndSize, um das Bild an C6 ausgerichtet zu halten, wenn die Spalte oder Zeile in der Größe geändert wird..xlsx-Datei auf der Festplatte.
Der folgende Code demonstriert den vollständigen Ansatz.const AsposeCells = require("aspose.cells");
const fs = require("fs");
const workbook = new AsposeCells.Workbook();
const worksheet = workbook.getWorksheets().get(0);
const fs_stream = fs.createReadStream("logo.png");
const picIndex = worksheet.getPictures().add(5, 2, fs_stream);
const picture = worksheet.getPictures().get(picIndex);
picture.setUpperLeftRow(5);
picture.setUpperLeftColumn(2);
picture.setLowerRightRow(6);
picture.setLowerRightColumn(3);
picture.setPlacement(AsposeCells.PlacementType.MoveAndSize);
workbook.save("output.xlsx", AsposeCells.SaveFormat.Xlsx);
Aspose.Cells bietet auch einen einfacheren Mechanismus für zellgebundene Bilder: die Eigenschaft cell.embeddedImage. Durch das Zuweisen von Bild-Bytes zu dieser Eigenschaft wird das Bild an die Zelle selbst angehängt, als wäre es Inline-Inhalt.
cell.embeddedImage zur kompaktesten Option, wenn Ihr Ziel einfach „ein Bild, das innerhalb dieser Zelle lebt" ist.Workbook (oder öffnen Sie eine vorhandene).Worksheet über workbook.worksheets[0] zu.fs.readFileSync) von der Festplatte in einen Buffer oder ein Byte-Array.worksheet.cells["C6"] oder worksheet.cells[5, 2].embeddedImage der Zelle zu..xlsx-Datei auf der Festplatte.
Der folgende Code demonstriert den vollständigen Ansatz.var workbook = new AsposeCells.Workbook();
var worksheet = workbook.getWorksheets().get(0);
// Get the target cell C6
var cell = worksheet.getCells().get("C6");
// Read the image file into a byte array
var imageData = fs.readFileSync("logo.png");
// Embed the image directly into the cell
cell.setEmbeddedImage(imageData);
// Optionally adjust row height and column width so the embedded image is more visible
worksheet.getCells().setColumnWidth(2, 30); // Column C (index 2)
worksheet.getCells().setRowHeight(5, 100); // Row 6 (index 5)
// Save the resulting workbook as an .xlsx file
workbook.save("output.xlsx", AsposeCells.SaveFormat.Xlsx);
Beide Ansätze erzeugen ein Bild, das in eine einzelne Zelle passt, aber sie unterscheiden sich darin, wie das Bild gespeichert wird und wie es sich verhält:
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.