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 Smart Markers. Utilizzando l’attributo ArrayAsSingle insieme all’attributo ExtraDelimiter, gli sviluppatori possono controllare il modo in cui 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 inserito in una cartella di lavoro 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à 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, esistono situazioni in cui è preferibile 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à array, Aspose.Cells espande l’array su più celle per impostazione predefinita. Ad esempio, un marker come &=Product.Tags riferito a 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 Java, unendo gli array in stringhe delimitate prima di associarle al workbook designer. Ciò duplica la logica, complica i modelli di dati e aumenta la possibilità di errori. Gli attributi ArrayAsSingle e ExtraDelimiter eliminano questa soluzione alternativa gestendo la formattazione in modo dichiarativo direttamente all’interno dello Smart Marker.
L’utilizzo degli attributi ArrayAsSingle e ExtraDelimiter negli 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à 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 in 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 output separati da nuova riga. Se l’array è vuoto, la cella risultante viene lasciata vuota.
Il flusso di lavoro seguente 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 inserire una cella Smart Marker che faccia riferimento alla proprietà array con gli attributi arrayasSingle e extraDelimiter.WorkbookDesigner, associarvi la cartella di lavoro designer e collegare l’origine dati utilizzando il metodo setDataSource.WorkbookDesigner.process() per espandere gli Smart Markers e popolare la cartella di lavoro con i dati reali.import com.aspose.cells.*;
class Product {
public String[] Tags;
}
public class CodeRunner {
public static void main(String[] args) throws Exception {
Product product = new Product();
product.Tags = new String[] { "C#", "Aspose", "SmartMarker", "Excel" };
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.getWorksheets().get(0);
worksheet.getCells().get("A1").putValue("Tags");
worksheet.getCells().get("A2").putValue("&=Product.Tags(arrayasSingle=true, extraDelimiter=\", \")");
WorkbookDesigner designer = new WorkbookDesigner();
designer.setWorkbook(workbook);
designer.setDataSource("Product", product);
designer.process();
workbook.save("output_arraySingle.xlsx");
}
}
import com.aspose.cells.*;
class Student
{
public int[] Scores;
}
public class CodeRunner
{
public static void main(String[] args) throws Exception
{
Student student = new Student();
student.Scores = new int[] { 95, 88, 76, 100, 67 };
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.getWorksheets().get(0);
worksheet.getCells().get("A1").putValue("Scores");
StringBuilder joined = new StringBuilder();
for (int i = 0; i < student.Scores.length; i++)
{
if (i > 0) joined.append(" - ");
joined.append(student.Scores[i]);
}
worksheet.getCells().get("A2").putValue(joined.toString());
workbook.save("output_numericArray.xlsx");
}
}
class Order
{
private String[] items;
public String[] getItems()
{
return items;
}
public void setItems(String[] items)
{
this.items = items;
}
}
Tenere presenti 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 di modelli potrebbe interpretare.arrayasSingle accetta un valore booleano (true / false). Solo true attiva il comportamento in cella singola; qualsiasi altro valore torna al comportamento di espansione predefinito.DataSet e DataTable in cui una colonna può essere suddivisa in array.\n o System.lineSeparator() come valore del delimitatore.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.