Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Aspose.Cells stöder rendering av arraydata till en enskild cell via Smart Markers. Genom att använda attributet ArrayAsSingle tillsammans med attributet ExtraDelimiter kan utvecklare styra hur arrayelement separeras inom en enskild cell, vilket ger flexibel formatering för rapporter och mallar.
Smart Markers i Aspose.Cells är en kraftfull, mallbaserad funktion som låter dig dynamiskt fylla kalkylbladsdata med hjälp av marköruttryck som &=DataSource.Field. Markören placeras i en designrarbetsbok, och när mallen bearbetas av WorkbookDesigner ersätts markörerna med värden från den tillhandahållna datakällan.
Som standard, när en Smart Marker refererar till en arrayegenskap (till exempel &=DataSource.Numbers), expanderar motorn arrayen och placerar varje element i en separat intilliggande cell — antingen horisontellt över en rad eller vertikalt nedför 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 arrayen i en enda cell, med elementen sammanfogade och åtskilda av 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 inbyggt med array-datakällor.
När en Smart Marker refererar till en arrayegenskap expanderar Aspose.Cells arrayen ö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örbehandla data i Python — sammanfoga arrayer till avgränsade strängar innan de binds till arbetsboksdesignern. Detta duplicerar logik, komplicerar datamodeller och ökar risken för fel. Attributen ArrayAsSingle och ExtraDelimiter eliminerar detta kringgående genom att hantera formateringen deklarativt inuti själva Smart Marker.
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 standard 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 arrayegenskapen på den bundna datakällan.arrayasSingle=true — instruerar motorn att rendera hela arrayen till en enda cell. Endast värdet true utlöser encellsbeteendet.extraDelimiter=", " — definierar avgränsaren som placeras mellan arrayelement. Värdet är en strängliteral; det kan vara tomt, ett enskilt tecken, eller en flerteckensträng.Attributet extraDelimiter accepterar vilken strängliteral som helst, inklusive flerteckenavgränsare, anpassad text, eller escapesekvenser som \n för nyradsseparerad utdata. Om arrayen är tom lämnas den resulterande cellen tom.
Följande arbetsflöde beskriver hur man renderar en array till en enda cell med hjälp av Smart Markers.
list[str], list[int] eller någon annan stödd arraytyp.Workbook, lägg till en rubrikrad och placera en Smart Marker-cell som refererar till arrayegenskapen med attributen arrayasSingle och extraDelimiter.WorkbookDesigner-objekt, koppla designrarbetsboken till det och bind din datakälla med metoden set_data_source.WorkbookDesigner.process() för att expandera Smart Markers och fylla arbetsboken med riktig data.class Product:
def __init__(self):
self.Tags = []
product = Product()
product.Tags = ["C#", "Aspose", "SmartMarker", "Excel"]
workbook = ac.Workbook()
worksheet = workbook.worksheets[0]
worksheet.cells["A1"].put_value("Tags")
worksheet.cells["A2"].put_value("&=Product.Tags(arrayasSingle=true, extraDelimiter=\", \")")
designer = ac.WorkbookDesigner()
designer.workbook = workbook
designer.set_data_source("Product", product)
designer.process()
workbook.save("output_arraySingle.xlsx")
class Student:
def __init__(self):
self.scores = []
student = Student()
student.scores = [95, 88, 76, 100, 67]
workbook = ac.Workbook()
worksheet = workbook.worksheets[0]
worksheet.cells["A1"].put_value("Scores")
worksheet.cells["A2"].put_value(" - ".join(str(s) for s in student.scores))
workbook.save("output_numericArray.xlsx")
class Order:
def __init__(self, items):
self._items = items
@property
def Items(self):
return self._items
@Items.setter
def Items(self, value):
self._items = value
order = Order(["Apple", "Banana", "Cherry", "Date"])
workbook = ac.Workbook()
sheet = workbook.worksheets[0]
cells = sheet.cells
# Section 1: Default Smart Marker - values spread horizontally across cells
cells["A1"].put_value("Default Spreading Behavior:")
cells["A2"].put_value("&=Order.Items")
# Section 2: New single-cell rendering using arrayasSingle and extraDelimiter
cells["A4"].put_value("Single Cell Rendering (arrayasSingle=true):")
cells["A5"].put_value('&=Order.Items(arrayasSingle=true, extraDelimiter="; ")')
# Bind the data source and process Smart Markers
designer = ac.WorkbookDesigner(workbook)
designer.set_data_source("Order", order)
designer.process()
# Save the resulting workbook
workbook.save("output_comparison.xlsx")
Tänk på följande punkter när du arbetar med attributen ArrayAsSingle och ExtraDelimiter:
extraDelimiter behandlas som en strängliteral; escapa alla specialtecken som din mallprocessor kan tolka.arrayasSingle accepterar ett boolskt värde (True / False). Endast True utlöser encellsbeteendet; alla andra värden återgår till standardspridningsbeteendet.DataSet- och DataTable-källor där en kolumn kan delas upp i arrayer.\n eller os.linesep som avgränsarvärde.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.