Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
ArrayAsSingle zusammen mit dem Attribut ExtraDelimiter können Entwickler steuern, wie Array-Elemente innerhalb einer einzelnen Zelle getrennt werden, was eine flexible Formatierung für Berichte und Vorlagen ermöglicht.
Smart Markers in Aspose.Cells sind eine leistungsstarke, vorlagenbasierte Funktion, mit der Sie Tabellendaten dynamisch mithilfe von Marker-Ausdrücken wie &=DataSource.Field befüllen können. Der Marker wird in einer Designer-Arbeitsmappe platziert, und wenn die Vorlage vom WorkbookDesigner verarbeitet wird, werden die Marker durch Werte aus der bereitgestellten Datenquelle ersetzt.
Standardmäßig, wenn ein Smart Marker auf eine Array-Eigenschaft verweist (z. B. &=DataSource.Numbers), expandiert die Engine das Array und platziert jedes Element in eine eigene angrenzende Zelle – entweder horizontal über eine Zeile oder vertikal über eine Spalte. Obwohl dieses Verhalten in vielen Szenarien praktisch ist, gibt es Situationen, in denen Sie es vorziehen würden, das gesamte Array in eine einzige Zelle zu rendern, wobei die Elemente verkettet und durch ein Trennzeichen Ihrer Wahl getrennt werden.
Die Attribute ArrayAsSingle und ExtraDelimiter, die zusammen innerhalb eines Smart-Marker-Tags verwendet werden, erfüllen genau diese Anforderung. Sie ermöglichen es Ihnen, Berichtslayouts kompakt und vorhersagbar zu halten, während Sie dennoch nativ mit Array-Datenquellen arbeiten.
Wenn ein Smart Marker auf eine Array-Eigenschaft verweist, expandiert Aspose.Cells das Array standardmäßig über mehrere Zellen. Beispielsweise platziert ein Marker wie &=Product.Tags bei einem string[] mit vier Werten jeden Wert in eine eigene Zelle, wodurch andere Vorlageninhalte nach außen verschoben werden und potenziell sorgfältig gestaltete Berichtslayouts beschädigt werden.
Es gibt viele praktische Szenarien, in denen das Standardverteilungsverhalten unerwünscht ist:
Ohne einen eingebauten Mechanismus wären Entwickler gezwungen, Daten in Python vorzuverarbeiten – Arrays in getrennte Zeichenketten zu verbinden, bevor sie sie an den Workbook-Designer binden. Dies dupliziert Logik, kompliziert Datenmodelle und erhöht die Fehlerwahrscheinlichkeit. Die Attribute ArrayAsSingle und ExtraDelimiter beseitigen diesen Workaround, indem sie die Formatierung deklarativ innerhalb des Smart Markers selbst handhaben.
Die Verwendung der Attribute ArrayAsSingle und ExtraDelimiter in Ihren Smart Markers bietet mehrere Vorteile:
Die Attribute ArrayAsSingle und ExtraDelimiter werden als Schlüssel-Wert-Paare innerhalb der Klammern eines Standard-Smart-Markers übergeben. Die allgemeine Syntax ist:
&=DataSource.ArrayProperty(arrayasSingle=true, extraDelimiter=", ")
Der Marker besteht aus den folgenden Teilen:
&=DataSource.ArrayProperty – der Standard-Smart-Marker, der auf die Array-Eigenschaft der gebundenen Datenquelle verweist.arrayasSingle=true – weist die Engine an, das gesamte Array in eine einzelne Zelle zu rendern. Nur der Wert true löst das Einzelzellen-Verhalten aus.extraDelimiter=", " – definiert das Trennzeichen, das zwischen Array-Elementen platziert wird. Der Wert ist ein Zeichenkettenliteral; er kann leer, ein einzelnes Zeichen oder eine mehrzeichige Zeichenkette sein.extraDelimiter akzeptiert jedes Zeichenkettenliteral, einschließlich mehrzeichiger Trennzeichen, benutzerdefiniertem Text oder Escape-Sequenzen wie \n für zeilenumbruchgetrennte Ausgabe. Wenn das Array leer ist, bleibt die resultierende Zelle leer.
Der folgende Workflow beschreibt, wie ein Array mithilfe von Smart Markers in eine einzelne Zelle gerendert wird.
string[], int[] oder einen anderen unterstützten Array-Typ zurückgeben.Workbook, fügen Sie eine Kopfzeile hinzu und platzieren Sie eine Smart-Marker-Zelle, die auf die Array-Eigenschaft mit den Attributen arrayasSingle und extraDelimiter verweist.WorkbookDesigner-Objekt, hängen Sie die Designer-Arbeitsmappe an und binden Sie Ihre Datenquelle mit der Methode set_data_source.WorkbookDesigner.process() auf, um die Smart Markers zu expandieren und die Arbeitsmappe mit echten Daten zu befüllen.import jpype
import asposecells
jpype.startJVM()
from asposecells.api import Workbook
from asposecells.api import Workbook, WorkbookDesigner
class Product:
def __init__(self, tags):
self._tags = tags
def getTags(self):
return self._tags
product = Product(["C#", "Aspose", "SmartMarker", "Excel"])
workbook = Workbook()
worksheet = workbook.getWorksheets().get(0)
worksheet.getCells().get("A1").putValue("Tags")
worksheet.getCells().get("A2").putValue("&=Product.Tags(arrayasSingle=true, extraDelimiter=\", \")")
designer = WorkbookDesigner()
designer.setWorkbook(workbook)
designer.setDataSource("Product", product)
designer.process()
workbook.save("output_arraySingle.xlsx")
jpype.shutdownJVM()
import jpype
import asposecells
jpype.startJVM()
from asposecells.api import Workbook
from asposecells.api import Workbook
# Definiere die Student-Klasse
class Student:
def __init__(self):
self.Scores = []
student = Student()
student.Scores = [95, 88, 76, 100, 67]
workbook = Workbook()
worksheet = workbook.getWorksheets().get(0)
worksheet.getCells().get("A1").putValue("Scores")
worksheet.getCells().get("A2").putValue(" - ".join(str(s) for s in student.Scores))
workbook.save("output_numericArray.xlsx")
jpype.shutdownJVM()
import jpype
import asposecells
jpype.startJVM()
from asposecells.api import Workbook
from asposecells.api import Workbook, WorkbookDesigner
# Definieren Sie die Datenquelle als Wörterbuch (entspricht der Order-Klasse)
order = {"Items": ["Apple", "Banana", "Cherry", "Date"]}
workbook = Workbook()
sheet = workbook.getWorksheets().get(0)
cells = sheet.getCells()
# Abschnitt 1: Standard-Smart-Marker - Werte werden horizontal über Zellen verteilt
cells.get("A1").putValue("Default Spreading Behavior:")
cells.get("A2").putValue("&=Order.Items")
# Abschnitt 2: Neue Einzelzellendarstellung mit arrayasSingle und extraDelimiter
cells.get("A4").putValue("Single Cell Rendering (arrayasSingle=true):")
cells.get("A5").putValue("&=Order.Items(arrayasSingle=true, extraDelimiter=\"; \")")
# Datenquelle binden und Smart-Marker verarbeiten
designer = WorkbookDesigner(workbook)
designer.setDataSource("Order", order)
designer.process()
# Speichern Sie die resultierende Arbeitsmappe
workbook.save("output_comparison.xlsx")
jpype.shutdownJVM()
Beachten Sie die folgenden Punkte, wenn Sie mit den Attributen ArrayAsSingle und ExtraDelimiter arbeiten:
extraDelimiter wird als Zeichenkettenliteral behandelt; escapen Sie alle Sonderzeichen, die Ihr Vorlagenprozessor interpretieren könnte.arrayasSingle akzeptiert einen booleschen Wert (true / false). Nur true löst das Einzelzellen-Verhalten aus; jeder andere Wert fällt auf das Standardverteilungsverhalten zurück.DataSet- und DataTable-Quellen kompatibel, bei denen eine Spalte in Arrays aufgeteilt werden kann.\n oder die Newline-Konstante der Plattform als Trennzeichenwert verwenden.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.