Verwenden von Smart-Markern
Einführung
Designer-Tabellenkalkulation und intelligente Markierungen
Designer-Arbeitsblätter sind standardmäßige Excel-Dateien, die visuelle Formatierungen, Formeln und intelligente Markierungen enthalten. Sie können intelligente Markierungen enthalten, die auf eine oder mehrere Datenquellen verweisen, z. B. Informationen aus einem Projekt und Informationen zu verwandten Kontakten. Intelligente Markierungen werden in die Zellen geschrieben, in denen Sie Informationen wünschen.
Alle intelligenten Markierungen beginnen mit &=. Ein Beispiel für eine Datenmarkierung ist &=Party.FullName. Wenn die Datenmarkierung mehr als ein Element ergibt, z. B. eine vollständige Zeile, werden die folgenden Zeilen automatisch nach unten verschoben, um Platz für die neuen Informationen zu schaffen. Somit können Zwischensummen und Gesamtsummen unmittelbar nach der Datenmarkierung in der Zeile platziert werden, um Berechnungen auf der Grundlage der eingefügten Daten durchzuführen. Um Berechnungen für die eingefügten Zeilen durchzuführen, verwenden Siedynamische Formeln.
Intelligente Markierungen bestehen aus derDatenquelle undFeldnameTeile für die meisten Informationen. Bei Variablen und Variablenarrays können auch spezielle Informationen übergeben werden. Variablen füllen immer nur eine Zelle, während Variablenarrays mehrere füllen können. Verwenden Sie nur einen Datenmarker pro Zelle. Nicht verwendete Smart-Marker werden entfernt.
Ein Smart-Marker kann auch Parameter enthalten. Mit Parametern können Sie die Anordnung der Informationen ändern. Sie werden als kommaseparierte Liste in Klammern an das Ende des Smart-Markers angehängt.
Smart-Marker-Optionen
&=Datenquelle.Feldname &=[Datenquelle].[Feldname]&=$VariablenName &=$VariableArray &==DynamischeFormel &=&=DynamischeFormel wiederholen
Parameter
Folgende Parameter sind erlaubt:
- noadd - Fügen Sie keine zusätzlichen Zeilen hinzu, um Daten anzupassen.
- überspringen: n - Überspringen Sie n Zeilen für jede Datenzeile.
- *aufsteigend:n oder absteigend:n - Daten in Smartmarkern sortieren. Wenn n 1 ist, dann ist die Spalte der erste Schlüssel des Sortierers. Die Daten werden nach Verarbeitung der Datenquelle sortiert. Beispiel: &=Tabelle1.Feld3(aufsteigend:1).
- horizontal - Schreiben Sie Daten von links nach rechts, anstatt von oben nach unten.
- numerisch - Text wenn möglich in Zahlen umwandeln.
- Schicht - Verschieben Sie nach unten oder rechts und erstellen Sie zusätzliche Zeilen oder Spalten, um die Daten anzupassen. Der Shift-Parameter funktioniert genauso wie in Microsoft Excel. Wenn Sie beispielsweise in Microsoft Excel einen Zellbereich auswählen, klicken Sie mit der rechten Maustaste und wählen Sie ausEinfügung und spezifizierenZellen nach unten verschieben, Zellen nach rechts verschieben und andere Optionen. Kurz gesagt erfüllt der Verschiebungsparameter die gleiche Funktion für vertikale/normale (von oben nach unten) oder horizontale (von links nach rechts) Smartmarker.
- Bohne - Gibt an, dass die Datenquelle ein einfaches POJO ist. Nur unterstützt in der Java API.
Die Parameter noadd und skip können kombiniert werden, um Daten abwechselnd in Zeilen einzufügen. Da die Vorlage von unten nach oben verarbeitet wird, sollten Sie in der ersten Zeile noadd hinzufügen, um zu vermeiden, dass zusätzliche Zeilen vor der alternativen Zeile eingefügt werden.
Wenn Sie mehrere Parameter haben, trennen Sie sie mit einem Komma, aber ohne Leerzeichen: ParameterA,ParameterB,ParameterC
Die folgenden Screenshots zeigen, wie Daten in jede zweite Zeile eingefügt werden.
wird…
Dynamische Formeln
Mit dynamischen Formeln können Sie Excel-Formeln in Zellen einfügen, selbst wenn die Formel auf Zeilen verweist, die während des Exportvorgangs eingefügt werden. Dynamische Formeln können sich für jede eingefügte Zeile wiederholen oder nur die Zelle verwenden, in der die Datenmarkierung platziert ist.
Dynamische Formeln ermöglichen die folgenden zusätzlichen Optionen:
- r - Aktuelle Zeilennummer.
- 2, -1 - Versatz zur aktuellen Zeilennummer.
Das Folgende veranschaulicht eine sich wiederholende dynamische Formel und das resultierende Excel-Arbeitsblatt.
wird…
Cell C1 enthält die Formel =A1B1, C2 enthält = A2B2 und C3 = A3*B3.
Die Verarbeitung der Smartmarker ist sehr einfach. Das folgende Code-Snippet zeigt, wie es gemacht wird.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(DynamicFormulas.class) + "SmartMarkers/"; | |
//set the file path of designer spreadsheet containing smart markers | |
String designerFile = dataDir + "templateDynamicFormulas.xlsx"; | |
// Create the relevant data listfor the AnswerData object | |
ArrayList<AnswerData> dataList = new ArrayList<>(); | |
dataList.add(new AnswerData(100.00, 2)); | |
dataList.add(new AnswerData(75.25, 3)); | |
dataList.add(new AnswerData(25.00, 5)); | |
if (designerFile != null) | |
{ | |
// Instantiating a WorkbookDesigner object | |
WorkbookDesigner designer = new WorkbookDesigner(); | |
// Open a designer spreadsheet containing smart markers | |
designer.setWorkbook(new Workbook(designerFile)); | |
// Set the data source for the designer spreadsheet | |
designer.setDataSource("Answer", dataList); | |
// Process the smart markers | |
designer.process(); | |
} | |
public class AnswerData | |
{ | |
private double price; | |
private int amount; | |
public AnswerData(double priceValue, int amountValue) | |
{ | |
this.price = priceValue; | |
this.amount = amountValue; | |
} | |
public double getPrice() | |
{ | |
return price; | |
} | |
public void setPrice(double price) | |
{ | |
this.price = price; | |
} | |
public int getAmount() | |
{ | |
return amount; | |
} | |
public void setAmount(int amount) | |
{ | |
this.amount = amount; | |
} | |
} |
Verwenden von Variablen-Arrays
Der folgende Beispielcode zeigt, wie Variablen-Arrays in Smart Markers verwendet werden. Wir platzieren dynamisch eine variable Array-Markierung in der A1-Zelle des ersten Arbeitsblatts der Arbeitsmappe, die eine Reihe von Werten enthält, die wir für die Markierung festlegen, und verarbeiten die Markierungen, um Daten in die Zellen gegen die Markierung zu füllen. Abschließend speichern wir die Excel-Datei.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(UsingVariableArray.class) + "SmartMarkers/"; | |
// Instantiate a new Workbook designer. | |
WorkbookDesigner report = new WorkbookDesigner(); | |
// Get the first worksheet of the workbook. | |
Worksheet w = report.getWorkbook().getWorksheets().get(0); | |
/* | |
* Set the Variable Array marker to a cell.You may also place this Smart | |
* Marker into a template file manually in Ms Excel and then open this | |
* file via Workbook. | |
*/ | |
w.getCells().get("A1").putValue("&=$VariableArray"); | |
// Set the DataSource for the marker(s). | |
report.setDataSource("VariableArray", new String[] { "English", "Arabic", "Hindi", "Urdu", "French" }); | |
// Process the markers. | |
report.process(false); | |
// Save the Excel file. | |
report.getWorkbook().save(dataDir + "varaiblearray_out.xlsx"); |
Daten gruppieren
In einigen Excel-Berichten müssen Sie die Daten möglicherweise in Gruppen aufteilen, um sie leichter lesen und analysieren zu können. Einer der Hauptzwecke für das Aufteilen von Daten in Gruppen ist das Ausführen von Berechnungen (Durchführen von Zusammenfassungsoperationen) für jede Gruppe von Datensätzen.
Aspose.Cells Mit intelligenten Markierungen können Sie Daten nach Feldern gruppieren und Zusammenfassungszeilen zwischen Datensätzen oder Datengruppen platzieren. Wenn Sie beispielsweise Daten nach Customers.CustomerID gruppieren, können Sie jedes Mal, wenn sich die Gruppe ändert, einen Zusammenfassungsdatensatz hinzufügen.
Parameter
Im Folgenden sind einige Smart-Marker-Parameter aufgeführt, die zum Gruppieren von Daten verwendet werden.
Gruppe:normal/zusammenführen/wiederholen
Wir unterstützen drei Arten von Gruppen, zwischen denen Sie wählen können.
- normal - Der Gruppieren-nach-Feld(er)-Wert wird für die entsprechenden Datensätze in der Spalte nicht wiederholt; stattdessen werden sie einmal pro Datengruppe gedruckt.
- verschmelzen - Dasselbe Verhalten wie beim normalen Parameter, außer dass die Zellen in den Gruppieren-nach-Feldern für jeden Gruppensatz zusammengeführt werden.
- wiederholen - Der Gruppieren-nach-Feld(er)-Wert wird für die entsprechenden Datensätze wiederholt.
Zum Beispiel: &=Kunden.KundenID(Gruppe:Merge)
überspringen
Überspringt eine bestimmte Anzahl von Zeilen nach jeder Gruppe.
Zum Beispiel &=Employees.EmployeeID(group:normal,skip:1)
ZwischensummeN
Führt eine Zusammenfassungsoperation für bestimmte Felddaten aus, die sich auf ein Gruppieren-nach-Feld beziehen. Das N steht für Zahlen zwischen 1 und 11, die die Funktion angeben, die beim Berechnen von Zwischensummen innerhalb einer Datenliste verwendet wird. (1=MITTELWERT, 2=ZAHL, 3=ZAHLA, 4=MAX, 5=MIN,…9=SUMME usw.) Weitere Einzelheiten finden Sie in der Zwischensummen-Referenz in der Excel-Hilfe Microsoft.
Das Format lautet tatsächlich wie folgt: subtotalN:Ref wobei Ref sich auf die Gruppierung nach Spalte bezieht.
Zum Beispiel,
- &=Products.Units(subtotal9:Products.ProductID) gibt die Zusammenfassungsfunktion anEinheiten Feld in Bezug auf dieProdukt ID Feld imProdukte Tisch.
- &=Tabx.Col3(subtotal9:Tabx.Col1) gibt die Zusammenfassungsfunktion anSpalte3 Feldgruppe nachSpalte1 in der TabelleTabx.
- &=Table1.ColumnD(subtotal9:Table1.ColumnA&Table1.ColumnB) gibt die Zusammenfassungsfunktion anSpalteD Feldgruppe nachSpalteA undSpalteB im TischTabelle 1.
Verwenden von verschachtelten Objekten
Aspose.Cells unterstützt verschachtelte Objekte in Smartmarkern, die verschachtelten Objekte sollten einfach sein.
Wir verwenden eine einfache Vorlagendatei. Sehen Sie sich das Designer-Arbeitsblatt an, das einige verschachtelte intelligente Markierungen enthält.
Das erste Arbeitsblatt der Designer-Datei mit verschachtelten Smart-Markern.
Wie das funktioniert, zeigt das folgende Beispiel. Das Ausführen des folgenden Codes führt zu der folgenden Ausgabe.
Das erste Arbeitsblatt der Ausgabedatei mit den resultierenden Daten.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(UsingNestedObjects.class) + "SmartMarkers/"; | |
Workbook workbook = new Workbook(dataDir + "TestSmartMarkers.xlsx"); | |
WorkbookDesigner designer = new WorkbookDesigner(); | |
designer.setWorkbook(workbook); | |
ArrayList<Individual> list = new ArrayList<Individual>(); | |
list.add(new Individual("John", 23, new Wife("Jill", 20))); | |
list.add(new Individual("Jack", 25, new Wife("Hilly", 21))); | |
list.add(new Individual("James", 26, new Wife("Hally", 22))); | |
list.add(new Individual("Baptist", 27, new Wife("Newly", 23))); | |
designer.setDataSource("Individual", list); | |
designer.process(false); | |
workbook.save(dataDir + "UsingNestedObjects_out.xlsx"); |
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
public class Individual { | |
private String m_Name; | |
private int m_Age; | |
private Wife m_Wife; | |
public Individual(String name, int age, Wife wife) { | |
this.m_Name = name; | |
this.m_Age = age; | |
this.m_Wife = wife; | |
} | |
public String getName() { | |
return m_Name; | |
} | |
public int getAge() { | |
return m_Age; | |
} | |
public Wife getWife() { | |
return m_Wife; | |
} | |
} |
Generische Liste als verschachteltes Objekt verwenden
Aspose.Cells unterstützt jetzt auch die Verwendung einer generischen Liste als verschachteltes Objekt. Bitte überprüfen Sie den Screenshot der Excel-Ausgabedatei, die mit dem folgenden Code generiert wurde. Wie Sie im Screenshot sehen können, enthält ein Lehrerobjekt mehrere verschachtelte Schülerobjekte.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(UsingGenericList.class) + "SmartMarkers/"; | |
// Create a designer workbook | |
Workbook workbook = new Workbook(); | |
Worksheet worksheet = workbook.getWorksheets().get(0); | |
worksheet.getCells().get("A1").putValue("Teacher Name"); | |
worksheet.getCells().get("A2").putValue("&=Teacher.Name"); | |
worksheet.getCells().get("B1").putValue("Teacher Age"); | |
worksheet.getCells().get("B2").putValue("&=Teacher.Age"); | |
worksheet.getCells().get("C1").putValue("Student Name"); | |
worksheet.getCells().get("C2").putValue("&=Teacher.Students.Name"); | |
worksheet.getCells().get("D1").putValue("Student Age"); | |
worksheet.getCells().get("D2").putValue("&=Teacher.Students.Age"); | |
// Apply Style to A1:D1 | |
Range range = worksheet.getCells().createRange("A1:D1"); | |
Style style = workbook.createStyle(); | |
style.getFont().setBold(true); | |
style.setForegroundColor(Color.getYellow()); | |
style.setPattern(BackgroundType.SOLID); | |
StyleFlag flag = new StyleFlag(); | |
flag.setAll(true); | |
range.applyStyle(style, flag); | |
// Initialize WorkbookDesigner object | |
WorkbookDesigner designer = new WorkbookDesigner(); | |
// Load the template file | |
designer.setWorkbook(workbook); | |
ArrayList<Teacher> list = new ArrayList<>(); | |
// Create the relevant student objects for the Teacher object | |
ArrayList<Person> students = new ArrayList<>(); | |
students.add(new Person("Chen Zhao", 14)); | |
students.add(new Person("Jamima Winfrey", 18)); | |
students.add(new Person("Reham Smith", 15)); | |
// Create a Teacher object | |
Teacher h1 = new Teacher("Mark John", 30, students); | |
// Create the relevant student objects for the Teacher object | |
students = new ArrayList<>(); | |
students.add(new Person("Karishma Jathool", 16)); | |
students.add(new Person("Angela Rose", 13)); | |
students.add(new Person("Hina Khanna", 15)); | |
// Create a Teacher object | |
Teacher h2 = new Teacher("Masood Shankar", 40, students); | |
// Add the objects to the list | |
list.add(h1); | |
list.add(h2); | |
// Specify the DataSource | |
designer.setDataSource("Teacher", list); | |
// Process the markers | |
designer.process(); | |
// Autofit columns | |
worksheet.autoFitColumns(); | |
// Save the Excel file. | |
designer.getWorkbook().save(dataDir + "UsingGenericList_out.xlsx"); |
package AsposeCellsExamples.SmartMarkers; | |
import java.util.ArrayList; | |
public class Teacher extends Person { | |
public Teacher(String name, int age, ArrayList<Person> students) { | |
super(name, age); | |
// TODO Auto-generated constructor stub\ | |
m_Students = students; | |
} | |
private ArrayList<Person> m_Students; | |
public ArrayList<Person> getStudents() { | |
return m_Students; | |
} | |
} |
package AsposeCellsExamples.SmartMarkers; | |
public class Person { | |
private String m_Name; | |
private int m_Age; | |
public Person(String name, int age) { | |
this.m_Name = name; | |
this.m_Age = age; | |
} | |
public String getName() { | |
return m_Name; | |
} | |
public int getAge() { | |
return m_Age; | |
} | |
} |
Verwendung der Eigenschaft HTML von Smart Markers
Der folgende Beispielcode erläutert die Verwendung der Eigenschaft HTML der Smart Markers. Wenn es verarbeitet wird, wird “World” in “Hello World” wegen HTML fett angezeigt <b> Schild.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(UsingHTMLProperty.class) + "SmartMarkers/"; | |
Workbook workbook = new Workbook(); | |
WorkbookDesigner designer = new WorkbookDesigner(); | |
designer.setWorkbook(workbook); | |
workbook.getWorksheets().get(0).getCells().get("A1").putValue("&=$VariableArray(HTML)"); | |
designer.setDataSource("VariableArray", | |
new String[] { "Hello <b>World</b>", "Arabic", "Hindi", "Urdu", "French" }); | |
designer.process(); | |
workbook.save(dataDir + "UHProperty-out.xls"); |
Benachrichtigungen erhalten, während Daten mit Smart Markern zusammengeführt werden
Manchmal kann es erforderlich sein, die Benachrichtigungen über den Zellbezug oder den bestimmten Smart Marker, der verarbeitet wird, vor dem Abschluss zu erhalten. Dies kann mit der erreicht werdenWorkbookDesigner.CallBackEigentum undISmartMarkerCallBack
Beispielcode und ausführliche Erläuterungen finden Sie in diesem Artikel.