Smart import och placering av data med smarta markörer
Introduktion
Smarta marköreranvänds för att låta Aspose.Cells veta vilken information som ska placeras i ett Microsoft Excel-designark. Smarta markörer låter dig skapa mallar som bara innehåller specifik information och formatering.
Designerkalkylblad och smarta markörer
Designer-kalkylblad är vanliga Excel-filer som innehåller visuell formatering, formler och smarta markörer. De kan innehålla smarta markörer som refererar till en eller flera datakällor, till exempel information från ett projekt och information för relaterade kontakter. Smarta markörer skrivs in i cellerna där du vill ha informationen.
Alla smarta markörer börjar med &=. Ett exempel på en datamarkör är &=Party.FullName. Om datamarkören resulterar i mer än ett objekt, till exempel en hel rad, flyttas följande rader ned automatiskt för att ge plats åt den nya informationen. Således kan delsummor och summor placeras på raden omedelbart efter datamarkören för att göra beräkningar baserat på infogade data. För att göra beräkningar på de infogade raderna, använddynamiska formler.
Smarta markörer består avdatakälla ochfält namndelar för mest information. Särskild information kan också skickas med variabler och variabla arrayer. Variabler fyller alltid bara en cell medan variabla arrayer kan fylla flera. Använd endast en datamarkör per cell. Oanvända smarta markörer tas bort.
Smart markör kan också innehålla parametrar. Parametrar låter dig ändra hur informationen är upplagd. De läggs till i slutet av den smarta markören inom parentes som en kommaseparerad lista.
Alternativ för smarta markörer
&=Datakälla.Fältnamn &=[Datakälla].[Fältnamn]&=$VariableName &=$VariableArray &==DynamicFormula &=&=RepeatDynamicFormula
Parametrar
Följande parametrar är tillåtna:
- noadd - Lägg inte till extra rader för att passa data.
- hoppa över:n - Hoppa över n antal rader för varje rad med data.
- stigande:n ellerfallande:n - Sortera data i smarta markörer. Om n är 1, är kolumnen den första nyckeln i sorteraren. Data sorteras efter bearbetning av datakällan. Till exempel: &=Tabell1.Fält3(stigande:1).
- horisontell - Skriv data från vänster till höger, istället för från topp till botten.
- numerisk - Konvertera text till nummer om möjligt.
- flytta - Växla nedåt eller höger, skapa extra rader eller kolumner för att passa data. Skiftparametern fungerar på samma sätt som i Microsoft Excel. Till exempel i Microsoft Excel, när du markerar ett cellintervall, högerklickar du och väljerFöra in och specificeraflytta ner cellerna, flytta celler åt höger och andra alternativ. Kort sagtflytta parametern fyller samma funktion för vertikala/normala (uppifrån och ned) eller horisontella (vänster till höger) smarta markörer.
- copystyle - Kopiera bascellens stil till alla celler i den kolumnen.
Parametrarna noadd och skip kan kombineras för att infoga data på alternerande rader. Eftersom mallen bearbetas från botten till toppen bör du lägga till noadd på första raden för att undvika att extra rader infogas före den alternativa raden.
Om du har flera parametrar, separera dem med ett kommatecken, men inget mellanslag: parameterA,parameterB,parameterC
Följande skärmdumpar visar hur man infogar data på varannan rad.
Mallfil | Utdatafil |
---|---|
![]() |
![]() |
Dynamiska formler
Dynamiska formler låter dig infoga Excel-formler i celler även när formeln refererar till rader som kommer att infogas under exportprocessen. Dynamiska formler kan upprepas för varje infogat rad eller bara använda cellen där datamarkören är placerad.
Dynamiska formler tillåter följande ytterligare alternativ:
- r - Aktuellt radnummer.
- 2, -1 - Offset till aktuellt radnummer.
Till exempel:
&=&=B{-1}/C{-1}~(skip:1)
I den dynamiska formelmarkören betecknar “-1” förskjutningen till den aktuella raden i B- respektive C-kolumner som kommer att ställas in för divisionsoperation, överhoppningsparametern är en rad. Dessutom bör vi ange följande char:
"~"
som ett separatortecken för att tillämpa ytterligare parametrar i dynamiska formler.
Följande skärmdumpar illustrerar en återkommande dynamisk formel och det resulterande Excel-kalkylbladet.
Mallfil | OutPut-fil |
---|---|
![]() |
![]() |
Cell “C1” innehåller formeln**= A1*B1** , cell “C2” innehåller**= A2*B2** och cell “C3” innehåller**= A3*B3**. |
Det är väldigt enkelt att bearbeta de smarta markörerna. Vad som följer är två kodavsnitt, en i C# och en i VB, som visar hur det går till.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Create directory if it is not already present. | |
bool IsExists = System.IO.Directory.Exists(dataDir); | |
if (!IsExists) | |
System.IO.Directory.CreateDirectory(dataDir); | |
//set the file path of designer spreadsheet containing smart markers | |
string designerFile = "templateDynamicFormulas.xlsx"; | |
//create your data set | |
DataSet dataset = new DataSet(); | |
DataTable dt = new DataTable("Answer"); | |
dataset.Tables.Add(dt); | |
DataColumn price = new DataColumn("Price", typeof(double)); | |
DataColumn amount = new DataColumn("Amount", typeof(int)); | |
dt.Columns.Add(price); | |
dt.Columns.Add(amount); | |
dt.Rows.Add(100.00, 2); | |
dt.Rows.Add(75.25, 3); | |
dt.Rows.Add(25.00, 5); | |
if (designerFile != null) | |
{ | |
// Instantiating a WorkbookDesigner object | |
WorkbookDesigner designer = new WorkbookDesigner(); | |
// Open a designer spreadsheet containing smart markers | |
designer.Workbook = new Workbook(designerFile); | |
// Set the data source for the designer spreadsheet | |
designer.SetDataSource(dataset); | |
// Process the smart markers | |
designer.Process(); | |
} |
Använda variabla arrayer
Följande exempelkod visar hur man använder variabla arrayer i Smart Markers. Vi placerar en variabel arraymarkör dynamiskt i A1-cellen i det första kalkylbladet i arbetsboken som innehåller en sträng med värden som vi ställer in för markören, bearbetar markörerna för att fylla data i cellerna mot markören. Slutligen sparar vi Excel-filen.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Instantiate a new Workbook designer. | |
WorkbookDesigner report = new WorkbookDesigner(); | |
// Get the first worksheet of the workbook. | |
Worksheet w = report.Workbook.Worksheets[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.Cells["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.Workbook.Save(dataDir + "output.xlsx"); |
Gruppera data
I vissa Excel-rapporter kan du behöva dela upp data i grupper för att göra det lättare att läsa och analysera. Ett av de primära syftena med att dela upp data i grupper är att köra beräkningar (utföra sammanfattningar) på varje grupp av poster.
Aspose.Cells smarta markörer låter dig gruppera data efter fält och placera sammanfattningsrader mellan datamängder eller datagrupper. Om du till exempel grupperar data efter Customers.CustomerID, kan du lägga till en sammanfattningspost varje gång gruppen ändras.
Parametrar
Nedan följer några av de smarta markörparametrarna som används för att gruppera data.
grupp:normal/sammanfoga/upprepa
Vi stödjer tre typer av grupper som du kan välja mellan.
- vanligt - Värdet för grupp efter fält upprepas inte för motsvarande poster i kolumnen; istället skrivs de ut en gång per datagrupp.
- sammanfoga - Samma beteende som för den normala parametern, förutom att den slår samman cellerna i gruppen efter fält för varje gruppuppsättning.
- upprepa - Värdet för grupp efter fält upprepas för motsvarande poster.
Till exempel: &=Kunder.Kund-ID(grupp:sammanfoga)
hoppa
Hoppa över ett angivet antal rader efter varje grupp.
Till exempel &=Anställda.Anställd-ID(grupp:normal,hoppa över:1)
delsummaN
Utför en sammanfattningsåtgärd för en specificerad fältdata relaterad till en grupp för fält. N representerar siffror mellan 1 och 11 som anger funktionen som används vid beräkning av delsummor i en lista med data. (1=GENOMsnitt, 2=ANTAL, 3=ANTAL, 4=MAX, 5=MIN,…9=SUMMA etc.) Se Deltotalreferensen i Microsoft Excels hjälp för ytterligare detaljer.
Formatet säger faktiskt som: subtotalN:Ref där Ref refererar till gruppen för kolumn.
Till exempel,
- &=Products.Units(subtotal9:Products.ProductID) specificerar sammanfattningsfunktion påEnheter fält med avseende påSerienummer fältet iProdukter tabell.
- &=Tabx.Col3(subtotal9:Tabx.Col1) anger sammanfattningsfunktionen påKol3 fältgrupp efterKol 1 i bordetTabx.
- &=Tabell1.KolumnD(delsumma9:Tabell1.KolumnA&Tabell1.KolumnB) anger sammanfattningsfunktion påKolumnD fältgrupp efterKolumn A ochKolumnB i bordetBord 1.
Det här exemplet visar några av grupperingsparametrarna i funktion. Den använder Northwind.mdb Microsoft Access-databasen och extraherar data från tabellen med namnet “Order Details”. Vi skapar en designerfil som heter SmartMarker_Designer.xls i Microsoft Excel och lägger in smarta markörer i olika celler i kalkylblad. Markörerna bearbetas för att fylla kalkylbladen. Data placeras och organiseras av ett gruppfält.
Designerfilen har två kalkylblad. I den första lägger vi smarta markörer med grupperingsparametrar som visas i skärmdumpen nedan. Tre smarta markörer (med grupperingsparametrar) placeras: &=[Beställningsinformation].OrderID(grupp:sammanfoga,hoppa över:1), &=[Beställningsinformation].Quantity(subtotal9:Order Details.OrderID), och &=[Beställningsinformation].UnitPrice(delsumma9:Beställningsdetaljer.OrderID) går in i A5, B5 respektive C5.
Det första kalkylbladet i filen SmartMarker_Designer.xls, komplett med smarta markörer |
---|
![]() |
det andra kalkylbladet i designerfilen lägger vi några fler smarta markörer som visas i figuren nedan. Vi placerar följande smarta markörer: |
&=[Beställningsinformation].OrderID(grupp:normal), |
&=[Beställningsinformation].Antal, |
&=[Beställningsinformation].UnitPrice, |
&=&=B(r)*C(r), och |
&=subtotal9:Beställningsdetaljer.OrderID till A5, B5, C5, D5 respektive C6. |
Det andra kalkylbladet i filen SmartMarker_Designer.xls, som visar blandade smarta markörer. |
---|
![]() |
Här är källkoden som används i exemplet. |
private void SmartMarkers_GroupingData() | |
{ | |
//Examples-CSharp-SmartMarkers-GroupingData-1.cs | |
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Create a connection object, specify the provider info and set the data source. | |
OleDbConnection con = new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" + dataDir + "Northwind.mdb"); | |
// Open the connection object. | |
con.Open(); | |
// Create a command object and specify the SQL query. | |
OleDbCommand cmd = new OleDbCommand("Select * from [Order Details]", con); | |
// Create a data adapter object. | |
OleDbDataAdapter da = new OleDbDataAdapter(); | |
// Specify the command. | |
da.SelectCommand = cmd; | |
// Create a dataset object. | |
DataSet ds = new DataSet(); | |
// Fill the dataset with the table records. | |
da.Fill(ds, "Order Details"); | |
// Create a datatable with respect to dataset table. | |
DataTable dt = ds.Tables["Order Details"]; | |
// Create WorkbookDesigner object. | |
WorkbookDesigner wd = new WorkbookDesigner(); | |
// Open the template file (which contains smart markers). | |
wd.Workbook = new Workbook(dataDir + "Designer.xlsx"); | |
// Set the datatable as the data source. | |
wd.SetDataSource(dt); | |
// Process the smart markers to fill the data into the worksheets. | |
wd.Process(true); | |
// Save the excel file. | |
wd.Workbook.Save(dataDir + "output.xlsx"); | |
} | |
class OleDbCommand | |
{ | |
private string p; | |
private OleDbConnection con; | |
public OleDbCommand(string p, OleDbConnection con) | |
{ | |
// TODO: Complete member initialization | |
this.p = p; | |
this.con = con; | |
} | |
} | |
class OleDbConnection | |
{ | |
private string p; | |
public OleDbConnection(string p) | |
{ | |
// TODO: Complete member initialization | |
this.p = p; | |
} | |
internal void Open() | |
{ | |
} | |
} | |
class OleDbDataAdapter | |
{ | |
public OleDbCommand SelectCommand { get; set; } | |
internal void Fill(System.Data.DataSet ds, string p) | |
{ | |
} | |
} |
Använda anonyma typer eller anpassade objekt
Aspose.Cells stöder även anonyma typer eller anpassade objekt i smarta markörer. Exemplet som följer visar hur detta fungerar. För att importera data från dynamiska objekt med smarta markörer, besök följande artikel:
Importerar från dynamiskt objekt som datakälla
private void SmartMarkers_UsingAnonymousTypes() | |
{ | |
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Instantiate the workbookdesigner object. | |
WorkbookDesigner report = new WorkbookDesigner(); | |
// Get the first worksheet(default sheet) in the workbook. | |
Aspose.Cells.Worksheet sheet = report.Workbook.Worksheets[0]; | |
// Input some markers to the cells. | |
sheet.Cells["A1"].PutValue("Name"); | |
sheet.Cells["B1"].PutValue("Age"); | |
sheet.Cells["A2"].PutValue("&=MyProduct.Name"); | |
sheet.Cells["B2"].PutValue("&=MyProduct.Age"); | |
// Instantiate the list collection based on the custom class. | |
IList<Person> list = new List<Person>(); | |
// Provide values for the markers using the custom class object. | |
list.Add(new Person("Simon", 30)); | |
list.Add(new Person("Johnson", 33)); | |
// Set the data source. | |
report.SetDataSource("MyProduct", list); | |
// Process the markers. | |
report.Process(false); | |
// Save the excel file. | |
report.Workbook.Save(dataDir + "Smart Marker Customobjects.xls"); | |
} | |
// Definition of Custom class. | |
public class Person | |
{ | |
private string m_Name; | |
public string Name | |
{ | |
get { return m_Name; } | |
set { m_Name = value; } | |
} | |
private int m_Age; | |
public int Age | |
{ | |
get { return m_Age; } | |
set { m_Age = value; } | |
} | |
internal Person(string name, int age) | |
{ | |
this.m_Name = name; | |
this.m_Age = age; | |
} | |
} |
Bildmarkörer
Aspose.Cells smarta markörer stöder också bildmarkörer. Det här avsnittet visar hur du infogar bilder med smarta markörer.
Bildparametrar
Smarta markörparametrar för att hantera bilder.
- Bild: FitToCell - Anpassa bilden automatiskt till cellens radhöjd och kolumnbredd.
- Bild: ScaleN - Skala höjd och bredd till N procent.
- Bild:Bredd:Nin&Höjd:Nin - Gör bilden N tum hög och N tum bred. Du kan också ange vänster- och topppositioner (i poäng).
Här är källkoden som används i exemplet.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Get the image data. | |
byte[] imageData = File.ReadAllBytes(dataDir+ "aspose-logo.jpg"); | |
// Create a datatable. | |
DataTable t = new DataTable("Table1"); | |
// Add a column to save pictures. | |
DataColumn dc = t.Columns.Add("Picture"); | |
// Set its data type. | |
dc.DataType = typeof(object); | |
// Add a new new record to it. | |
DataRow row = t.NewRow(); | |
row[0] = imageData; | |
t.Rows.Add(row); | |
// Add another record (having picture) to it. | |
imageData = File.ReadAllBytes(dataDir+ "image2.jpg"); | |
row = t.NewRow(); | |
row[0] = imageData; | |
t.Rows.Add(row); | |
// Create WorkbookDesigner object. | |
WorkbookDesigner designer = new WorkbookDesigner(); | |
// Open the template Excel file. | |
designer.Workbook = new Workbook(dataDir+ "TestSmartMarkers.xlsx"); | |
// Set the datasource. | |
designer.SetDataSource(t); | |
// Process the markers. | |
designer.Process(); | |
// Save the Excel file. | |
designer.Workbook.Save(dataDir+ "output.xls"); |
Använda kapslade objekt
Aspose.Cells stöder kapslade objekt i smarta markörer, de kapslade objekten ska vara enkla. Vi använder en enkel mallfil. Se designerkalkylarket som innehåller några kapslade smarta markörer.
Det första kalkylbladet i filen SM_NestedObjects.xlsx som visar kapslade smarta markörer. |
---|
![]() |
Exemplet som följer visar hur detta fungerar. |
private void SmartMarkers_UsingNestedObjects() | |
{ | |
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// ****** Program ****** | |
// Initialize WorkbookDesigner object | |
WorkbookDesigner designer = new WorkbookDesigner(); | |
// Load the template file | |
designer.Workbook = new Workbook(dataDir + "SM_NestedObjects.xlsx"); | |
// Instantiate the List based on the class | |
System.Collections.Generic.ICollection<Individual> list = new System.Collections.Generic.List<Individual>(); | |
// Create an object for the Individual class | |
Individual p1 = new Individual("Damian", 30); | |
// Create the relevant Wife class for the Individual | |
p1.Wife = new Wife("Dalya", 28); | |
// Create another object for the Individual class | |
Individual p2 = new Individual("Mack", 31); | |
// Create the relevant Wife class for the Individual | |
p2.Wife = new Wife("Maaria", 29); | |
// Add the objects to the list | |
list.Add(p1); | |
list.Add(p2); | |
// Specify the DataSource | |
designer.SetDataSource("Individual", list); | |
// Process the markers | |
designer.Process(false); | |
// Save the Excel file. | |
designer.Workbook.Save(dataDir + "output.xlsx"); | |
} | |
class Individual | |
{ | |
private String m_Name; | |
public String Name | |
{ | |
get { return m_Name; } | |
set { m_Name = value; } | |
} | |
private int m_Age; | |
public int Age | |
{ | |
get { return m_Age; } | |
set { m_Age = value; } | |
} | |
internal Individual(string name, int age) | |
{ | |
this.Name = name; | |
this.Age = age; | |
} | |
private Wife m_Wife; | |
public Wife Wife | |
{ | |
get { return m_Wife; } | |
set { m_Wife = value; } | |
} | |
} | |
public class Wife | |
{ | |
public Wife(string name, int age) | |
{ | |
this.m_name = name; | |
this.m_age = age; | |
} | |
private string m_name; | |
public string Name | |
{ | |
get { return m_name; } | |
set { m_name = value; } | |
} | |
private int m_age; | |
public int Age | |
{ | |
get { return m_age; } | |
set { m_age = value; } | |
} | |
} |
Använder generisk lista som kapslade objekt
Aspose.Cells stöder nu även användning av generisk lista som ett kapslat objekt. Kontrollera skärmdumpen av den utgående excel-filen som genereras med följande kod. Som du kan se på skärmdumpen innehåller ett Lärarobjekt flera kapslade Studentobjekt.
![]() |
---|
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
Workbook workbook = new Workbook(); | |
// Create a designer workbook | |
// Workbook workbook = new Workbook(); | |
Worksheet worksheet = workbook.Worksheets[0]; | |
worksheet.Cells["A1"].PutValue("Teacher Name"); | |
worksheet.Cells["A2"].PutValue("&=Teacher.Name"); | |
worksheet.Cells["B1"].PutValue("Teacher Age"); | |
worksheet.Cells["B2"].PutValue("&=Teacher.Age"); | |
worksheet.Cells["C1"].PutValue("Student Name"); | |
worksheet.Cells["C2"].PutValue("&=Teacher.Students.Name"); | |
worksheet.Cells["D1"].PutValue("Student Age"); | |
worksheet.Cells["D2"].PutValue("&=Teacher.Students.Age"); | |
// Apply Style to A1:D1 | |
Range range = worksheet.Cells.CreateRange("A1:D1"); | |
Style style = workbook.CreateStyle(); | |
style.Font.IsBold = true; | |
style.ForegroundColor = Color.Yellow; | |
style.Pattern = BackgroundType.Solid; | |
StyleFlag flag = new StyleFlag(); | |
flag.All = true; | |
range.ApplyStyle(style, flag); | |
// Initialize WorkbookDesigner object | |
WorkbookDesigner designer = new WorkbookDesigner(); | |
// Load the template file | |
designer.Workbook = workbook; | |
System.Collections.Generic.List<Teacher> list = new System.Collections.Generic.List<Teacher>(); | |
// Create an object for the Teacher class | |
Teacher h1 = new Teacher("Mark John", 30); | |
// Create the relevant student objects for the Teacher object | |
h1.Students = new List<Person>(); | |
h1.Students.Add(new Person("Chen Zhao", 14)); | |
h1.Students.Add(new Person("Jamima Winfrey", 18)); | |
h1.Students.Add(new Person("Reham Smith", 15)); | |
// Create another object for the Teacher class | |
Teacher h2 = new Teacher("Masood Shankar", 40); | |
// Create the relevant student objects for the Teacher object | |
h2.Students = new List<Person>(); | |
h2.Students.Add(new Person("Karishma Jathool", 16)); | |
h2.Students.Add(new Person("Angela Rose", 13)); | |
h2.Students.Add(new Person("Hina Khanna", 15)); | |
// 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.Workbook.Save(dataDir + "output.xlsx"); |
Använder HTML egendom för Smart Markers
Följande exempelkod förklarar användningen av egenskapen HTML för Smart Markers. När det kommer att bearbetas kommer det att visa “World” i “Hello World” som fetstil på grund av HTML märka.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
Workbook workbook = new Workbook(); | |
WorkbookDesigner designer = new WorkbookDesigner(); | |
designer.Workbook = workbook; | |
workbook.Worksheets[0].Cells["A1"].PutValue("&=$VariableArray(HTML)"); | |
designer.SetDataSource("VariableArray", new String[] { "Hello <b>World</b>", "Arabic", "Hindi", "Urdu", "French" }); | |
designer.Process(); | |
workbook.Save(dataDir + "output.xls"); | |
Inte rad för rad
Den nuvarande standardbehandlingsmetoden är att bearbeta smartmaker rad för rad. Men ibland måste de smarta markörerna i samma datatabell bearbetas tillsammans, oavsett om de är i samma rad eller inte, måste du ange ett namngivet intervall “_CellsSmartMarkers” och ange WorkbookDesigner.LineByLine som falskt innan du anropar bearbetningen.
||
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
Workbook workbook = new Workbook(); | |
Style style = workbook.CreateStyle(); | |
style.Pattern = BackgroundType.Solid; | |
style.ForegroundColor = Color.Black; | |
style.Font.Color = Color.White; | |
// Create a designer workbook | |
// Workbook workbook = new Workbook(); | |
Worksheet worksheet = workbook.Worksheets[0]; | |
worksheet.Cells["A1"].PutValue("Teacher Name"); | |
worksheet.Cells["A1"].SetStyle(style); | |
worksheet.Cells["A2"].PutValue("&=Teacher.Name"); | |
worksheet.Cells["B1"].PutValue("Teacher Age"); | |
worksheet.Cells["B1"].SetStyle(style); | |
worksheet.Cells["B2"].PutValue("&=Teacher.Age"); | |
worksheet.Cells["A3"].PutValue("Student Name"); | |
worksheet.Cells["A3"].SetStyle(style); | |
worksheet.Cells["A4"].PutValue("&=Teacher.Students.Name"); | |
worksheet.Cells["B3"].PutValue("Student Age"); | |
worksheet.Cells["B3"].SetStyle(style); | |
worksheet.Cells["B4"].PutValue("&=Teacher.Students.Age"); | |
worksheet.AutoFitColumns(); | |
//A named range "_CellsSmartMarkers" must be added for checking which range contains all smart markers about a table. | |
worksheet.Cells.CreateRange("A1:B4").Name = "_CellsSmartMarkers"; | |
// Initialize WorkbookDesigner object | |
WorkbookDesigner designer = new WorkbookDesigner(); | |
// Load the template file | |
designer.Workbook = workbook; | |
System.Collections.Generic.List<Teacher> list = new System.Collections.Generic.List<Teacher>(); | |
// Create an object for the Teacher class | |
Teacher h1 = new Teacher("Mark John", 30); | |
// Create the relevant student objects for the Teacher object | |
h1.Students = new List<Person>(); | |
h1.Students.Add(new Person("Chen Zhao", 14)); | |
h1.Students.Add(new Person("Jamima Winfrey", 18)); | |
h1.Students.Add(new Person("Reham Smith", 15)); | |
// Create another object for the Teacher class | |
Teacher h2 = new Teacher("Masood Shankar", 40); | |
// Create the relevant student objects for the Teacher object | |
h2.Students = new List<Person>(); | |
h2.Students.Add(new Person("Karishma Jathool", 16)); | |
h2.Students.Add(new Person("Angela Rose", 13)); | |
h2.Students.Add(new Person("Hina Khanna", 15)); | |
// Add the objects to the list | |
list.Add(h1); | |
list.Add(h2); | |
// Specify the DataSource | |
designer.SetDataSource("Teacher", list); | |
designer.LineByLine = false; | |
// Process the markers | |
designer.Process(); | |
// Autofit columns | |
worksheet.AutoFitColumns(); | |
// Save the Excel file. | |
designer.Workbook.Save(dataDir + "output.xlsx"); | |
public class Person | |
{ | |
private string m_Name; | |
public string Name | |
{ | |
get { return m_Name; } | |
set { m_Name = value; } | |
} | |
private int m_Age; | |
public int Age | |
{ | |
get { return m_Age; } | |
set { m_Age = value; } | |
} | |
internal Person(string name, int age) | |
{ | |
this.m_Name = name; | |
this.m_Age = age; | |
} | |
} | |
public class Teacher | |
{ | |
private string m_Name; | |
public string Name | |
{ | |
get { return m_Name; } | |
set { m_Name = value; } | |
} | |
private int m_Age; | |
public int Age | |
{ | |
get { return m_Age; } | |
set { m_Age = value; } | |
} | |
private List<Person> mStudents; | |
public List<Person> Students | |
{ | |
get { return mStudents; } | |
set { mStudents = value; } | |
} | |
public Teacher(string name, int age) | |
{ | |
this.Name = name; | |
this.Age = age; | |
} | |
} |
Få aviseringar när du slår samman data med smarta markörer
Ibland kan det krävas att du får meddelanden om cellreferensen eller den specifika smarta markören som bearbetas innan slutförandet. Detta kan uppnås med hjälp av egenskapen WorkbookDesigner.CallBack och ISmartMarkerCallBack
Förhandsämnen
- Lägga till anonymt eller anpassat objekt i SmartMarkers
- Fyll i smartmarkördata automatiskt till andra kalkylblad om data är för stor
- Formatera smarta markörer
- Få aviseringar när du slår samman data med smarta markörer
- Ställ in anpassad DataSource för WorkbookDesigner
- Visa ledande apostrof i celler
- Använder formelparametern i Smart Marker-fältet
- Använda bildmarkörer samtidigt som data grupperas i smarta markörer