Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
ArrayAsSingle conjointement avec l’attribut ExtraDelimiter, les développeurs peuvent contrôler la manière dont les éléments du tableau sont séparés dans une seule cellule, offrant une mise en forme flexible pour les rapports et les modèles.
Les Smart Markers dans Aspose.Cells sont une fonctionnalité puissante, basée sur des modèles, qui vous permet de remplir dynamiquement les données d’une feuille de calcul à l’aide d’expressions de marqueurs telles que &=DataSource.Field. Le marqueur est placé dans un classeur designer, et lorsque le modèle est traité par le WorkbookDesigner, les marqueurs sont remplacés par les valeurs provenant de la source de données fournie.
Par défaut, lorsqu’un Smart Marker fait référence à une propriété de tableau (par exemple, &=DataSource.Numbers), le moteur développe le tableau et place chaque élément dans une cellule adjacente distincte — soit horizontalement sur une ligne, soit verticalement dans une colonne. Bien que ce comportement soit pratique dans de nombreux scénarios, il existe des situations où vous préféreriez rendre l’intégralité du tableau dans une seule cellule, avec les éléments concaténés et séparés par un délimiteur de votre choix.
Les attributs ArrayAsSingle et ExtraDelimiter, utilisés ensemble à l’intérieur d’une balise Smart Marker, répondent précisément à cette exigence. Ils vous permettent de conserver des mises en page de rapport compactes et prévisibles tout en travaillant nativement avec des sources de données de tableau.
Lorsqu’un Smart Marker fait référence à une propriété de tableau, Aspose.Cells développe le tableau sur plusieurs cellules par défaut. Par exemple, un marqueur tel que &=Product.Tags appliqué à un string[] contenant quatre valeurs placera chaque valeur dans sa propre cellule, repoussant le reste du contenu du modèle et pouvant potentiellement briser des mises en page de rapport soigneusement conçues.
Il existe de nombreux scénarios pratiques où le comportement de répartition par défaut n’est pas souhaitable :
Sans mécanisme intégré, les développeurs seraient contraints de prétraiter les données en C# ou VB.NET — en joignant les tableaux en chaînes délimitées avant de les lier au concepteur de classeur. Cela duplique la logique, complique les modèles de données et augmente le risque d’erreurs. Les attributs ArrayAsSingle et ExtraDelimiter éliminent cette solution de contournement en gérant la mise en forme de manière déclarative à l’intérieur du Smart Marker lui-même.
L’utilisation des attributs ArrayAsSingle et ExtraDelimiter dans vos Smart Markers offre plusieurs avantages :
Les attributs ArrayAsSingle et ExtraDelimiter sont passés sous forme de paires clé-valeur à l’intérieur des parenthèses d’un Smart Marker standard. La syntaxe générale est la suivante :
&=DataSource.ArrayProperty(arrayasSingle=true, extraDelimiter=", ")
Le marqueur est composé des parties suivantes :
&=DataSource.ArrayProperty — le Smart Marker standard faisant référence à la propriété de tableau sur la source de données liée.arrayasSingle=true — indique au moteur de rendre l’intégralité du tableau dans une seule cellule. Seule la valeur true déclenche le comportement de cellule unique.extraDelimiter=", " — définit le séparateur placé entre les éléments du tableau. La valeur est une chaîne littérale ; elle peut être vide, un seul caractère ou une chaîne de plusieurs caractères.L’attribut extraDelimiter accepte toute chaîne littérale, y compris des délimiteurs multi-caractères, du texte personnalisé ou des séquences d’échappement telles que \n pour une sortie séparée par des sauts de ligne. Si le tableau est vide, la cellule résultante reste vide.
Le flux de travail suivant décrit comment rendre un tableau dans une seule cellule à l’aide des Smart Markers.
string[], int[] ou tout autre type de tableau pris en charge.Workbook, ajoutez une ligne d’en-tête et placez une cellule Smart Marker qui fait référence à la propriété de tableau avec les attributs arrayasSingle et extraDelimiter.WorkbookDesigner, attachez-lui le classeur designer et liez votre source de données à l’aide de la méthode SetDataSource.WorkbookDesigner.Process() pour développer les Smart Markers et remplir le classeur avec les données réelles.using System;
using Aspose.Cells;
class Program
{
public class Product
{
public string[] Tags { get; set; }
}
public static void Main()
{
Product product = new Product
{
Tags = new string[] { "C#", "Aspose", "SmartMarker", "Excel" }
};
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.Worksheets[0];
worksheet.Cells["A1"].PutValue("Tags");
worksheet.Cells["A2"].PutValue("&=Product.Tags(arrayasSingle=true, extraDelimiter=\", \")");
WorkbookDesigner designer = new WorkbookDesigner();
designer.Workbook = workbook;
designer.SetDataSource("Product", product);
designer.Process();
workbook.Save("output_arraySingle.xlsx");
}
}
public class Student
{
public int[] Scores { get; set; }
}
public class Program
{
public static void Main()
{
var student = new Student
{
Scores = new int[] { 95, 88, 76, 100, 67 }
};
var workbook = new Workbook();
var worksheet = workbook.Worksheets[0];
worksheet.Cells["A1"].PutValue("Scores");
worksheet.Cells["A2"].PutValue(string.Join(" - ", student.Scores));
workbook.Save("output_numericArray.xlsx");
}
}
using System;
using Aspose.Cells;
public class Program
{
public static void Main()
{
var order = new Order
{
Items = new string[] { "Apple", "Banana", "Cherry", "Date" }
};
var workbook = new Workbook();
var sheet = workbook.Worksheets[0];
var cells = sheet.Cells;
// Section 1: Default Smart Marker - values spread horizontally across cells
cells["A1"].PutValue("Default Spreading Behavior:");
cells["A2"].PutValue("&=Order.Items");
// Section 2: New single-cell rendering using arrayasSingle and extraDelimiter
cells["A4"].PutValue("Single Cell Rendering (arrayasSingle=true):");
cells["A5"].PutValue("&=Order.Items(arrayasSingle=true, extraDelimiter=\"; \")");
// Bind the data source and process Smart Markers
var designer = new WorkbookDesigner(workbook);
designer.SetDataSource("Order", order);
designer.Process();
// Save the resulting workbook
workbook.Save("output_comparison.xlsx");
}
}
public class Order
{
public string[] Items { get; set; }
}
Gardez à l’esprit les points suivants lorsque vous travaillez avec les attributs ArrayAsSingle et ExtraDelimiter :
extraDelimiter est traitée comme une chaîne littérale ; échappez tous les caractères spéciaux que votre processeur de modèles pourrait interpréter.arrayasSingle accepte une valeur booléenne (true / false). Seul true déclenche le comportement de cellule unique ; toute autre valeur revient au comportement de répartition par défaut.DataSet et DataTable où une colonne peut être divisée en tableaux.\n ou Environment.NewLine comme valeur de délimiteur.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.