Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Aspose.Cells offre due modalità distinte 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 requisiti del tuo layout.
Adattare un’immagine esattamente a una singola cella è un requisito comune quando si progettano fogli di calcolo che fungono da report visivi, cataloghi prodotti, elenchi dipendenti, dashboard o liste di inventario. Piuttosto che allungare un’immagine su molte celle o posizionarla liberamente su un foglio di lavoro, potresti volere un’immagine pulita, legata alla cella, che rimane allineata alla cella che la contiene. Aspose.Cells supporta questo scenario in due modi complementari:
Picture al foglio di lavoro, impostare il suo Placement su MOVE_AND_SIZE e regolare le sue celle di ancoraggio (getUpperLeftRow, getUpperLeftColumn, getLowerRightRow, getLowerRightColumn) in modo che l’immagine copra esattamente una cella.getEmbeddedImage() della cella. L’immagine si ridimensiona automaticamente per adattarsi all’area di visualizzazione della cella e viaggia con la cella.
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 risiede sul livello di disegno del foglio di lavoro. Sebbene non faccia parte di una 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 si estende su più celle.
Per fare in modo che un’immagine mobile copra esattamente una cella, è necessario:
Worksheet.getPictures().add(int row, int column, InputStream stream), che ancora la nuova immagine alla cella specificata.Picture.setPlacement() 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.getUpperLeftRow() — l’indice di riga del bordo superiore dell’immagine.Picture.getUpperLeftColumn() — l’indice di colonna del bordo sinistro dell’immagine.Picture.getLowerRightRow() — 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, impostare questo valore su r + 1.Picture.getLowerRightColumn() — 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, impostare 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 off-by-one sull’ancoraggio in basso a destra sono la causa più comune di immagini che sembrano sovrapporsi a una cella adiacente.
Picture.getPlacement() restituisce un’enumerazione di tipo PlacementType che controlla il comportamento dell’immagine 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 aprirne uno esistente).Worksheet di destinazione da workbook.getWorksheets().get(0).InputStream (come un FileInputStream) utilizzando un blocco try-with-resources in modo che lo stream venga chiuso correttamente.worksheet.getPictures().add(5, 2, stream) per aggiungere un’immagine ancorata alla cella C6. Acquisire il riferimento Picture restituito.setUpperLeftRow(5), setUpperLeftColumn(2), setLowerRightRow(6), setLowerRightColumn(3).picture.setPlacement(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 com.aspose.cells.*;
import java.io.FileInputStream;
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.getWorksheets().get(0);
try (FileInputStream fs = new FileInputStream("logo.png"))
{
int picIndex = worksheet.getPictures().add(5, 2, fs);
Picture picture = worksheet.getPictures().get(picIndex);
picture.setUpperLeftRow(5);
picture.setUpperLeftColumn(2);
picture.setLowerRightRow(6);
picture.setLowerRightColumn(3);
picture.setPlacement(PlacementType.MOVE_AND_SIZE);
}
workbook.save("output.xlsx", SaveFormat.XLSX);
Aspose.Cells espone anche un meccanismo più semplice per le immagini legate alle celle: il metodo Cell.setEmbeddedImage(byte[]). L’assegnazione dei byte dell’immagine a questa proprietà collega l’immagine alla cella stessa, come se fosse contenuto inline.
setEmbeddedImage() l’opzione più concisa quando il tuo obiettivo è semplicemente “un’immagine che vive all’interno di questa cella”.Workbook (o aprirne uno esistente).Worksheet di destinazione da workbook.getWorksheets().get(0).byte[] (ad esempio, leggendo il file tramite Files.readAllBytes() da java.nio.file).worksheet.getCells().get("C6") oppure worksheet.getCells().get(5, 2).cell.setEmbeddedImage(bytes)..xlsx.
Il codice seguente dimostra l’approccio completo.import com.aspose.cells.*;
import java.nio.file.Files;
import java.nio.file.Paths;
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.getWorksheets().get(0);
// Ottieni la cella di destinazione C6
Cell cell = worksheet.getCells().get("C6");
// Leggi il file immagine in un array di byte
byte[] imageData = Files.readAllBytes(Paths.get("logo.png"));
// Incorpora l'immagine direttamente nella cella
cell.setEmbeddedImage(imageData);
// Facoltativamente regola l'altezza della riga e la larghezza della colonna in modo che l'immagine incorporata sia più visibile
worksheet.getCells().setColumnWidth(2, 30); // Colonna C (indice 2)
worksheet.getCells().setRowHeight(5, 100); // Riga 6 (indice 5)
// Salva la cartella di lavoro risultante come file .xlsx
workbook.save("output.xlsx", 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:
PictureCollection.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.