Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Excel Camera è un oggetto del foglio di lavoro che rende un’immagine live di un intervallo di celle e fluttua sul livello di disegno come un’immagine ordinaria. Aspose.Cells supporta due modalità di creazione, un’immagine dinamica che si aggiorna automaticamente ogni volta che i dati di origine cambiano e un’immagine statica che cattura un’istantanea una tantum di un intervallo. Questo articolo illustra entrambi gli approcci così potrai scegliere quello che si adatta al tuo layout.
Excel Camera è essenzialmente un oggetto immagine ancorato a una riga e colonna specifiche sul livello di disegno del foglio di lavoro. A differenza di un’immagine normale inserita, la Camera è collegata a un intervallo di origine tramite una formula in stile A1 come "A1:F10". Ogni volta che una cella all’interno di quell’intervallo cambia, l’immagine della Camera viene aggiornata automaticamente per riflettere il nuovo contenuto. La Camera conserva l’intera formattazione dell’area di origine — bordi, colori di sfondo, caratteri e formati numerici — così tutto ciò che è visibile all’interno delle celle appare anche nell’immagine della Camera. Ciò rende la Camera particolarmente utile per dashboard, riepiloghi, pannelli laterali e layout di report in cui si desidera un’anteprima visibile di un’area remota senza scorrere o ripetere i dati. Ci sono due avvertenze: è necessario chiamare updateSelectedValue() prima di salvare la cartella di lavoro, e il file verrà esportato in HTML o PDF, perché tali formati si basano sui dati immagine incorporati piuttosto che su un ricalcolo live.
La Camera dinamica è l’approccio più comune ed è la corrispondenza più vicina allo strumento Camera integrato di Excel. Funziona aggiungendo un’immagine senza contenuto iniziale, quindi assegnandole una Formula che fa riferimento all’intervallo di origine. Dopo l’assegnazione della formula, la chiamata a updateSelectedValue() aggiorna i dati immagine incorporati in modo che siano sincronizzati con le celle di cui è il mirror. La Camera non è implementata tramite una classe dedicata — è costruita interamente sul tipo standard Picture.
Le API chiave sono:
PictureCollection.add(int upperLeftRow, int upperLeftColumn, InputStream stream) — aggiunge un’immagine ancorata alla riga e colonna indicate. Passare null per il parametro stream crea un’immagine vuota che funge da segnaposto per una Camera dinamica. Il metodo restituisce l’indice della nuova immagine.worksheet.getPictures().get(index) — accesso tramite indicizzatore per recuperare una specifica Picture dalla raccolta.Picture.setFormula(String value) — imposta il riferimento in stile A1 all’intervallo di origine di cui la Camera è il mirror, come "A1:F10".Picture.updateSelectedValue() — un metodo void che aggiorna i dati immagine incorporati dalle celle a cui fa riferimento Formula.updateSelectedValue() DEVE essere chiamato prima del salvataggio quando l’output è HTML o PDF; altrimenti il file esportato non conterrà i dati immagine e la Camera apparirà vuota nell’output renderizzato.
Il codice seguente crea una cartella di lavoro, aggiunge un’immagine vuota ancorata alla riga 10 colonna 6, la collega all’intervallo di origine A1:F10 tramite setFormula, aggiorna i dati immagine incorporati e salva la cartella di lavoro.
import java.io.InputStream;
import com.aspose.cells.PictureCollection;
import com.aspose.cells.SaveFormat;
import com.aspose.cells.Workbook;
import com.aspose.cells.Worksheet;
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.getWorksheets().get(0);
worksheet.setName("CameraDemo");
// Fotocamera Dinamica: aggiungi un'immagine vuota, collegalo tramite Formula a A1:F10, poi aggiorna
PictureCollection pictures = worksheet.getPictures();
int index = pictures.add(10, 6, (InputStream) null);
pictures.get(index).setFormula("A1:F10");
pictures.get(index).updateSelectedValue();
workbook.save("output_dynamic.xlsx", SaveFormat.XLSX);
La Camera statica è essenzialmente un’anteprima renderizzata una tantum di un intervallo di celle. Invece di mantenere un collegamento live, si rende l’intervallo in byte di immagine una volta, si avvolgono tali byte in un ByteArrayInputStream e li si aggiungono come un’immagine normale. Il contenuto dell’immagine è quindi fissato al momento della creazione e non si aggiorna automaticamente quando le celle di origine cambiano.
Le API chiave sono:
Cells.createRange(String address) — costruisce un oggetto Range da un indirizzo in stile A1 come "A1:F10".Range.toImage(ImageOrPrintOptions options) — rende l’intervallo in byte di immagine. Passare null usa le opzioni di rendering predefinite; esistono overload per un controllo più fine sull’output.new ByteArrayInputStream(byte[] buffer) — avvolge i byte dell’immagine renderizzata in un ByteArrayInputStream che può essere passato a PictureCollection.add.PictureCollection.add(int upperLeftRow, int upperLeftColumn, InputStream stream) — aggiunge l’immagine ancorata alla riga e colonna indicate, questa volta passando il ByteArrayInputStream prodotto dal rendering.
Il codice seguente crea una cartella di lavoro, costruisce un Range per A1:F10, lo rende in byte di immagine tramite Range.toImage(null), avvolge i byte in un ByteArrayInputStream, aggiunge l’immagine ancorata alla riga 10 colonna 6 e salva la cartella di lavoro.import java.io.ByteArrayInputStream;
import com.aspose.cells.PictureCollection;
import com.aspose.cells.Range;
import com.aspose.cells.SaveFormat;
import com.aspose.cells.Workbook;
import com.aspose.cells.Worksheet;
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.getWorksheets().get(0);
worksheet.setName("CameraDemo");
// Camera statica: crea Range, esegui il rendering in byte, avvolgi in ByteArrayInputStream, aggiungi come immagine
Range range = worksheet.getCells().createRange("A1:F10");
PictureCollection pictures = worksheet.getPictures();
pictures.add(10, 6, new ByteArrayInputStream(range.toImage(null)));
workbook.save("output_static.xlsx", SaveFormat.XLSX);
updateSelectedValue(), e conserva il comportamento di collegamento live per tutta la durata del file.Picture.Formula più updateSelectedValue() sia una Camera one-shot statica costruita su Range.toImage più un ByteArrayInputStream. Scegli l’approccio dinamico quando il tuo output deve rimanere sincronizzato con le celle di origine, e scegli l’approccio statico quando hai bisogno solo di un’istantanea visiva fissa al momento della build.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.