Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Aspose.Cells supporta il rendering dei dati di array in una singola cella tramite gli Smart Markers. Utilizzando l’attributo ArrayAsSingle insieme all’attributo ExtraDelimiter, gli sviluppatori possono controllare come gli elementi dell’array vengono separati all’interno di una singola cella, offrendo una formattazione flessibile per report e modelli.
Gli Smart Markers in Aspose.Cells sono una potente funzionalità basata su modelli che consente di popolare dinamicamente i dati del foglio di calcolo utilizzando espressioni marker come &=DataSource.Field. Il marker viene posizionato in una cartella di lavoro del designer e, quando il modello viene elaborato dal WorkbookDesigner, i marker vengono sostituiti con i valori provenienti dall’origine dati fornita.
Per impostazione predefinita, quando uno Smart Marker fa riferimento a una proprietà di array (ad esempio, &=DataSource.Numbers), il motore espande l’array e posiziona ciascun elemento in una cella adiacente separata — orizzontalmente su una riga o verticalmente lungo una colonna. Sebbene questo comportamento sia comodo in molti scenari, ci sono situazioni in cui si preferisce eseguire il rendering dell’intero array in un’unica cella, con gli elementi concatenati e separati da un delimitatore a scelta.
Gli attributi ArrayAsSingle e ExtraDelimiter, utilizzati insieme all’interno di un tag Smart Marker, soddisfano esattamente questo requisito. Consentono di mantenere i layout dei report compatti e prevedibili, lavorando comunque in modo nativo con origini dati di tipo array.
Quando uno Smart Marker fa riferimento a una proprietà di array, Aspose.Cells espande l’array su più celle per impostazione predefinita. Ad esempio, un marker come &=Product.Tags su un string[] contenente quattro valori posizionerà ciascun valore nella propria cella, spingendo il resto del contenuto del modello verso l’esterno e potenzialmente compromettendo layout di report progettati con cura.
Esistono molti scenari pratici in cui il comportamento di espansione predefinito è indesiderato:
Senza un meccanismo integrato, gli sviluppatori sarebbero costretti a pre-elaborare i dati in JavaScript, unendo gli array in stringhe delimitate prima di associarle al designer della cartella di lavoro. Ciò duplica la logica, complica i modelli di dati e aumenta la probabilità di errori. Gli attributi ArrayAsSingle e ExtraDelimiter eliminano questa soluzione alternativa gestendo la formattazione in modo dichiarativo all’interno dello Smart Marker stesso.
L’utilizzo degli attributi ArrayAsSingle e ExtraDelimiter nei propri Smart Markers offre diversi vantaggi:
Gli attributi ArrayAsSingle e ExtraDelimiter vengono passati come coppie chiave-valore all’interno delle parentesi di uno Smart Marker standard. La sintassi generale è:
&=DataSource.ArrayProperty(arrayasSingle=true, extraDelimiter=", ")
Il marker è composto dalle seguenti parti:
&=DataSource.ArrayProperty — lo Smart Marker standard che fa riferimento alla proprietà di array sull’origine dati associata.arrayasSingle=true — indica al motore di eseguire il rendering dell’intero array in una singola cella. Solo il valore true attiva il comportamento a cella singola.extraDelimiter=", " — definisce il separatore inserito tra gli elementi dell’array. Il valore è una stringa letterale; può essere vuoto, un singolo carattere o una stringa multi-carattere.L’attributo extraDelimiter accetta qualsiasi stringa letterale, inclusi delimitatori multi-carattere, testo personalizzato o sequenze di escape come \n per un output separato da nuova riga. Se l’array è vuoto, la cella risultante viene lasciata vuota.
Il seguente flusso di lavoro descrive come eseguire il rendering di un array in una singola cella utilizzando gli Smart Markers.
string[], int[] o qualsiasi altro tipo di array supportato.Workbook, aggiungere una riga di intestazione e posizionare una cella Smart Marker che faccia riferimento alla proprietà di array con gli attributi arrayasSingle e extraDelimiter.WorkbookDesigner, associare ad esso la cartella di lavoro del designer e associare l’origine dati utilizzando il metodo setDataSource.workbookDesigner.process() per espandere gli Smart Markers e popolare la cartella di lavoro con i dati reali.let product = {
Tags: ["C#", "Aspose", "SmartMarker", "Excel"]
};
let workbook = new AsposeCells.Workbook();
let worksheet = workbook.getWorksheets().get(0);
worksheet.getCells().get("A1").putValue("Tags");
worksheet.getCells().get("A2").putValue('&=Product.Tags(arrayasSingle=true, extraDelimiter=", ")');
let designer = new AsposeCells.WorkbookDesigner();
designer.setWorkbook(workbook);
designer.setDataSource("Product", product);
designer.process();
workbook.save("output_arraySingle.xlsx");
class Student {
constructor() {
this.Scores = [];
}
}
const student = new Student();
student.Scores = [95, 88, 76, 100, 67];
const workbook = new AsposeCells.Workbook();
const worksheet = workbook.getWorksheets().get(0);
worksheet.getCells().get("A1").putValue("Scores");
worksheet.getCells().get("A2").putValue(student.Scores.join(" - "));
workbook.save("output_numericArray.xlsx");
var order = {
Items: ["Apple", "Banana", "Cherry", "Date"]
};
var workbook = new AsposeCells.Workbook();
var sheet = workbook.getWorksheets().get(0);
var cells = sheet.getCells();
// Sezione 1: Smart Marker predefinito - valori distribuiti orizzontalmente tra le celle
cells.get("A1").putValue("Default Spreading Behavior:");
cells.get("A2").putValue("&=Order.Items");
// Sezione 2: Nuovo rendering a cella singola utilizzando arrayasSingle e extraDelimiter
cells.get("A4").putValue("Single Cell Rendering (arrayasSingle=true):");
cells.get("A5").putValue("&=Order.Items(arrayasSingle=true, extraDelimiter=\"; \")");
// Associa l'origine dati ed elabora gli Smart Marker
var designer = new AsposeCells.WorkbookDesigner(workbook);
designer.setDataSource("Order", order);
designer.process();
// Salva la cartella di lavoro risultante
workbook.save("output_comparison.xlsx");
Tenere presente i seguenti punti quando si lavora con gli attributi ArrayAsSingle e ExtraDelimiter:
extraDelimiter viene trattato come una stringa letterale; eseguire l’escape di eventuali caratteri speciali che il processore del modello potrebbe interpretare.arrayasSingle accetta un valore booleano (true / false). Solo true attiva il comportamento a cella singola; qualsiasi altro valore ricade nel comportamento di espansione predefinito.DataSet e DataTable in cui una colonna può essere suddivisa in array.\n o os.EOL come valore del delimitatore.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.