Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
ArrayAsSingle tillsammans med attributet ExtraDelimiter kan utvecklare styra hur matriselement separeras inom en enda cell, vilket ger flexibel formettering för rapporter och mallar.
Smart Markers i Aspose.Cells är en kraftfull, mallbaserad funktion som låter dig dynamiskt fylla i kalkylbladsdata med hjälp av marköruttryck som &=DataSource.Field. Markören placeras i en designarbetsbok, och när mallen bearbetas av WorkbookDesigner ersätts markörerna med värden från den angivna datakällan.
Som standard, när en Smart Marker refererar till en matrisegenskap (till exempel &=DataSource.Numbers), expanderar motorn matrisen och placerar varje element i en separat intilliggande cell — antingen horisontellt över en rad eller vertikalt ner i en kolumn. Även om detta beteende är bekvämt i många scenarier finns det situationer där du skulle föredra att rendera hela matrisen i en enda cell, med elementen sammanfogade och separerade med en avgränsare efter eget val.
Attributen ArrayAsSingle och ExtraDelimiter, som används tillsammans inom en Smart Marker-tagg, uppfyller just detta krav. De låter dig hålla rapportlayouter kompakta och förutsägbara samtidigt som du arbetar med matriser som datakällor.
När en Smart Marker refererar till en matrisegenskap expanderar Aspose.Cells matrisen över flera celler som standard. Till exempel kommer en markör som &=Product.Tags mot en string[] som innehåller fyra värden att placera varje värde i sin egen cell, vilket skjuter annat mallinnehåll utåt och potentiellt bryter noggrant utformade rapportlayouter.
Det finns många praktiska scenarier där standardspridningsbeteendet är oönskat:
Utan en inbyggd mekanism skulle utvecklare tvingas förbearbeta data i C# eller VB.NET — sammanfoga matriser till avgränsade strängar innan de binder dem till arbetsboksdesignern. Detta duplicerar logik, komplicerar datamodeller och ökar risken för fel. Attributen ArrayAsSingle och ExtraDelimiter eliminerar denna lösning genom att hantera formateringen deklarativt inuti Smart Marker-taggen.
Att använda attributen ArrayAsSingle och ExtraDelimiter i dina Smart Markers ger flera fördelar:
Attributen ArrayAsSingle och ExtraDelimiter skickas som nyckel-värde-par inom parenteserna i en vanlig Smart Marker. Den allmänna syntaxen är:
&=DataSource.ArrayProperty(arrayasSingle=true, extraDelimiter=", ")
Markören består av följande delar:
&=DataSource.ArrayProperty — standard-Smart Marker som refererar till matrisegenskapen på den bundna datakällan.arrayasSingle=true — instruerar motorn att rendera hela matrisen i en enda cell. Endast värdet true utlöser encellsbeteendet.extraDelimiter=", " — definierar avgränsaren som placeras mellan matriselement. Värdet är en strängliteral; det kan vara tomt, ett enskilt tecken eller en flerteckensträng.Attributet extraDelimiter accepterar alla strängliterals, inklusive flerteckenavgränsare, anpassad text eller escape-sekvenser som \n för nyradsseparerad utdata. Om matrisen är tom lämnas den resulterande cellen tom.
Följande arbetsflöde beskriver hur man renderar en matris till en enda cell med hjälp av Smart Markers.
string[], int[] eller annan matristyp som stöds.Workbook, lägg till en rubrikrad och placera en Smart Marker-cell som refererar till matrisegenskapen med attributen arrayasSingle och extraDelimiter.WorkbookDesigner-objekt, koppla designarbetsboken till det och bind din datakälla med metoden SetDataSource.WorkbookDesigner.Process() för att expandera Smart Markers och fylla arbetsboken med verklig data.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; }
}
Tänk på följande punkter när du arbetar med attributen ArrayAsSingle och ExtraDelimiter:
extraDelimiter behandlas som en strängliteral; escapea eventuella specialtecken som din mallprocessor kan tolka.arrayasSingle accepterar ett boolskt värde (true / false). Endast true utlöser encellsbeteendet; alla andra värden faller tillbaka till standardspridningsbeteendet.DataSet- och DataTable-källor där en kolumn kan delas upp i matriser.\n eller Environment.NewLine som avgränsarvärde.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.