Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Aspose.Cells offre due modi distinti per associare un’immagine a una singola cella. Un’immagine mobile è una forma sul livello di disegno del foglio di lavoro che si sovrappone visivamente a un intervallo di celle, mentre un’immagine incorporata è memorizzata all’interno della cella stessa e si adatta automaticamente all’area di visualizzazione della cella. Scegli l’approccio che meglio soddisfa i tuoi requisiti di layout.
Adattare un’immagine esattamente a una singola cella è un requisito comune quando si progettano fogli di calcolo che fungono da report visivi, cataloghi di prodotti, rubriche del personale, dashboard o elenchi di inventario. Piuttosto che allungare un’immagine su più celle o posizionarla liberamente su un foglio di lavoro, potresti volere un’immagine pulita, legata alla cella, che rimanga allineata con la cella che la possiede. Aspose.Cells supporta questo scenario in due modi complementari:
Picture al foglio di lavoro, imposta il suo placement su MoveAndSize e regola le sue celle di ancoraggio (upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn) in modo che l’immagine copra esattamente una cella.embeddedImage della cella. L’immagine si ridimensiona automaticamente per adattarsi all’area di visualizzazione della cella e segue la cella.
Il resto di questo articolo esamina entrambi gli approcci, spiega le API pertinenti e mostra come usarle nel codice.Un’immagine mobile è un oggetto Picture che risiede sul livello di disegno del foglio di lavoro. Sebbene non faccia parte di nessuna singola cella, è ancorata a un intervallo di celle. Le celle di ancoraggio dell’immagine — i suoi angoli in alto a sinistra e in basso a destra — ne determinano l’estensione visiva sul foglio di lavoro. Per impostazione predefinita, un’immagine appena aggiunta copre più celle.
Per fare in modo che un’immagine mobile copra esattamente una cella, devi:
worksheet.pictures.add(row, column, stream), che ancora la nuova immagine alla cella specificata.picture.placement su PlacementType.MoveAndSize in modo che l’immagine si sposti e si ridimensioni con la cella sottostante quando l’utente modifica la larghezza della colonna o l’altezza della riga.L’ancoraggio dell’immagine è definito da quattro proprietà di indice a base zero:
picture.upperLeftRow — l’indice di riga del bordo superiore dell’immagine.picture.upperLeftColumn — l’indice di colonna del bordo sinistro dell’immagine.picture.lowerRightRow — l’indice di riga del bordo inferiore dell’immagine. Per fare in modo che il bordo inferiore dell’immagine si trovi in fondo alla riga r, imposta questo su r + 1.picture.lowerRightColumn — l’indice di colonna del bordo destro dell’immagine. Per fare in modo che il bordo destro dell’immagine si trovi a destra della colonna c, imposta questo su c + 1.Gli indici di riga e colonna in Aspose.Cells sono a base zero. La cella C6 ha indice di riga 5 e indice di colonna 2. Gli errori di off-by-one sull’ancoraggio in basso a destra sono la causa più comune di immagini che sembrano sovrapporsi a una cella adiacente.
picture.placement è un’enumerazione di tipo PlacementType che controlla come si comporta l’immagine quando l’utente ridimensiona la riga o la colonna sottostante. Il valore consigliato per un’immagine a cella singola è PlacementType.MoveAndSize, che fa sì che l’immagine si sposti e si ridimensioni insieme alla cella sottostante, preservando l’adattamento esatto.
Workbook (o aprine una esistente).Worksheet di destinazione da workbook.worksheets[0].worksheet.pictures.add(5, 2, stream) per aggiungere un’immagine ancorata alla cella C6. Acquisisci il riferimento al Picture restituito.upperLeftRow = 5, upperLeftColumn = 2, lowerRightRow = 6, lowerRightColumn = 3.picture.placement = PlacementType.MoveAndSize per mantenere l’immagine allineata con C6 quando la colonna o la riga viene ridimensionata..xlsx.
Il codice seguente dimostra l’approccio completo.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 espone anche un meccanismo più semplice per le immagini legate alle celle: la proprietà cell.embeddedImage. Assegnare i byte dell’immagine a questa proprietà collega l’immagine alla cella stessa, come se fosse contenuto in linea.
cell.embeddedImage l’opzione più concisa quando il tuo obiettivo è semplicemente “un’immagine che vive all’interno di questa cella”.Workbook (o aprine una esistente).Worksheet di destinazione da workbook.worksheets[0].fs.readFileSync).worksheet.cells["C6"] o worksheet.cells[5, 2].embeddedImage della cella..xlsx.
Il codice seguente dimostra l’approccio completo.var workbook = new AsposeCells.Workbook();
var worksheet = workbook.getWorksheets().get(0);
// Ottieni la cella di destinazione C6
var cell = worksheet.getCells().get("C6");
// Leggi il file immagine in un array di byte
var imageData = fs.readFileSync("logo.png");
// Incorpora l'immagine direttamente nella cella
cell.setEmbeddedImage(imageData);
// Facoltativamente regola l'altezza della riga e la larghezza della colonna per rendere più visibile l'immagine incorporata
worksheet.getCells().setColumnWidth(2, 30); // Colonna C (indice 2)
worksheet.getCells().setRowHeight(5, 100); // Riga 6 (indice 5)
// Salva il workbook risultante come file .xlsx
workbook.save("output.xlsx", AsposeCells.SaveFormat.Xlsx);
Entrambi gli approcci producono un’immagine che si adatta all’interno di una singola cella, ma differiscono nel modo in cui l’immagine è memorizzata e nel suo comportamento:
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.