Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
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 di dipendenti, dashboard o elenchi di inventario. Invece di estendere un’immagine su molte celle o di posizionarla liberamente su un foglio di lavoro, potresti volere un’immagine pulita e legata alla cella che rimane allineata alla cella che la possiede. Aspose.Cells supporta questo scenario in due modi complementari:
Picture al foglio di lavoro, imposta il suo placement su MOVE_AND_SIZE e regola le celle di ancoraggio (upper_left_row, upper_left_column, lower_right_row, lower_right_column) in modo che l’immagine copra esattamente una cella.embedded_image della cella. L’immagine si ridimensiona automaticamente per adattarsi all’area di visualizzazione della cella e si sposta insieme a essa.
Il resto di questo articolo illustra entrambi gli approcci, spiega le API pertinenti e mostra come utilizzarle nel codice.Un’immagine mobile è un oggetto Picture che vive 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 superiore-sinistro e inferiore-destro — determinano la sua estensione visiva sul foglio di lavoro. Per impostazione predefinita, un’immagine appena aggiunta si estende su più celle.
Per fare in modo che un’immagine mobile copra esattamente una cella, è necessario:
Worksheet.pictures.add(row, column, stream), che ancora la nuova immagine alla cella indicata.Picture.placement su PlacementType.MOVE_AND_SIZE 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.upper_left_row — l’indice di riga del bordo superiore dell’immagine.Picture.upper_left_column — l’indice di colonna del bordo sinistro dell’immagine.Picture.lower_right_row — l’indice di riga del bordo inferiore dell’immagine. Per fare in modo che il bordo inferiore dell’immagine si trovi alla fine della riga r, imposta questo valore su r + 1.Picture.lower_right_column — l’indice di colonna del bordo destro dell’immagine. Per fare in modo che il bordo destro dell’immagine si trovi alla destra della colonna c, imposta questo valore 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 uno sull’ancoraggio inferiore-destro sono la causa più comune di immagini che sembrano sovrapporsi a una cella adiacente.
Picture.placement è un’enumerazione di tipo PlacementType che controlla come l’immagine si comporta quando l’utente ridimensiona la riga o la colonna sottostante. Il valore consigliato per un’immagine a cella singola è PlacementType.MOVE_AND_SIZE, che fa sì che l’immagine si sposti e si ridimensioni insieme alla cella sottostante, preservando l’adattamento esatto.
Workbook (o aprine uno esistente).Worksheet di destinazione da workbook.worksheets[0].BytesIO) utilizzando un blocco with in modo che il flusso venga eliminato correttamente.worksheet.pictures.add(5, 2, stream) per aggiungere un’immagine ancorata alla cella C6. Cattura il riferimento Picture restituito.upper_left_row = 5, upper_left_column = 2, lower_right_row = 6, lower_right_column = 3.picture.placement = PlacementType.MOVE_AND_SIZE per mantenere l’immagine allineata con C6 quando la colonna o la riga viene ridimensionata..xlsx.
Il codice seguente dimostra l’approccio completo.import aspose.cells as ac
workbook = ac.Workbook()
worksheet = workbook.worksheets[0]
with open("logo.png", "rb") as fs:
pic_index = worksheet.pictures.add(5, 2, fs)
picture = worksheet.pictures[pic_index]
picture.upper_left_row = 5
picture.upper_left_column = 2
picture.lower_right_row = 6
picture.lower_right_column = 3
picture.placement = ac.PlacementType.MOVE_AND_SIZE
workbook.save("output.xlsx", ac.SaveFormat.XLSX)
Aspose.Cells espone anche un meccanismo più semplice per le immagini legate alle celle: la proprietà Cell.embedded_image. Assegnando i byte dell’immagine a questa proprietà, l’immagine viene allegata alla cella stessa, come se fosse contenuto in linea.
Cell.embedded_image l’opzione più concisa quando il tuo obiettivo è semplicemente “un’immagine che vive all’interno di questa cella”.Workbook (o aprine uno esistente).Worksheet di destinazione da workbook.worksheets[0].bytes (ad esempio, aprendo il file in modalità binaria e chiamando .read()).worksheet.cells["C6"] o worksheet.cells[5, 2].embedded_image della cella..xlsx.
Il codice seguente dimostra l’approccio completo.import aspose.cells as ac
workbook = ac.Workbook()
worksheet = workbook.worksheets[0]
# Get the target cell C6
cell = worksheet.cells["C6"]
# Read the image file into a byte array
with open("logo.png", "rb") as f:
imageData = f.read()
# Embed the image directly into the cell
cell.embedded_image = imageData
# Optionally adjust row height and column width so the embedded image is more visible
worksheet.cells.set_column_width(2, 30) # Column C (index 2)
worksheet.cells.set_row_height(5, 100) # Row 6 (index 5)
# Save the resulting workbook as an .xlsx file
workbook.save("output.xlsx", ac.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 viene memorizzata e nel suo comportamento:
pictures.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.