Importazione e posizionamento intelligenti dei dati con marcatori intelligenti
Introduzione
I marcatori intelligenti vengono utilizzati per far conoscere ad Aspose.Cells quali informazioni inserire in un foglio di calcolo di progettazione di Microsoft Excel. I marcatori intelligenti ti consentono di creare modelli che contengono solo informazioni specifiche e formattazione.
Foglio di calcolo di progettazione e Marcatori intelligenti
I fogli di calcolo di progettazione sono file Excel standard che contengono formattazioni visive, formule e marcatori intelligenti. Possono contenere marcatori intelligenti che fanno riferimento a una o più origini di dati, come informazioni provenienti da un progetto e informazioni per contatti correlati. I marcatori intelligenti vengono scritti nelle celle in cui si desidera inserire le informazioni.
Tutti i marker smart iniziano con &=. Un esempio di un marker dati è &=Party.FullName. Se il marker dati produce più di un elemento, ad esempio, una riga completa, allora le righe successive vengono spostate automaticamente verso il basso per fare spazio alle nuove informazioni. Pertanto, i subtotali e i totali possono essere posizionati sulla riga immediatamente dopo il marker dati per effettuare calcoli basati sui dati inseriti. Per effettuare calcoli sulle righe inserite, utilizzare formule dinamiche.
I marker smart consistono principalmente nelle parti origine dei dati e nome del campo per la maggior parte delle informazioni. Informazioni speciali possono anche essere passate con variabili e array di variabili. Le variabili riempiono sempre solo una cella, mentre gli array di variabili possono riempire diverse celle. Utilizzare solo un marker dati per cella. I marker smart non utilizzati vengono rimossi.
Il marker smart può anche contenere parametri. I parametri ti consentono di modificare come le informazioni sono organizzate. Vengono aggiunti alla fine del marker smart tra parentesi come elenco separato da virgola.
Opzioni del Marker Smart
&=OrigineDati.NomeCampo &=[Origine Dati].[Nome Campo] &=$NomeVariabile &=$ArrayVariabili &==FormulaDinamica &=&=RipetiFormulaDinamica
Parametri
Sono consentiti i seguenti parametri:
- noadd - Non aggiungere righe aggiuntive per adattare i dati.
- skip:n - Ignora n numero di righe per ogni riga di dati.
- ascending:n o descending:n - Ordina i dati nei marker smart. Se n è 1, allora la colonna è la prima chiave dell’ordinamento. I dati sono ordinati dopo il trattamento dell’origine dati. Ad esempio: &=Tabella1.Campo3(crescente:1).
- orizzontale - Scrivi i dati da sinistra a destra, invece che dall’alto verso il basso.
- numerico - Converti il testo in numero se possibile.
- spostamento - Sposta verso il basso o a destra, creando righe o colonne aggiuntive per adattare i dati. Il parametro di spostamento funziona allo stesso modo di Microsoft Excel. Ad esempio in Microsoft Excel, quando selezioni un intervallo di celle, fai clic con il pulsante destro del mouse e selezioni Inserisci e specifica sposta celle in basso, sposta celle a destra e altre opzioni. In breve, il parametro di spostamento svolge la stessa funzione per i marker smart verticali/normali (dall’alto in basso) o orizzontali (da sinistra a destra).
- copiastile - Copia lo stile della cella di base in tutte le celle di quella colonna.
I parametri noadd e skip possono essere combinati per inserire dati su righe alternate. Poiché il modello viene elaborato dall’alto verso il basso, è necessario aggiungere noadd sulla prima riga per evitare che vengano inserite righe aggiuntive prima della riga alternata.
Se hai più parametri, separali con virgole, ma senza spazi: parametroA, parametroB, parametroC
Le seguenti schermate mostrano come inserire dati ogni altra riga
File del modello | File di output |
---|---|
Formule dinamiche
Le formule dinamiche ti consentono di inserire formule Excel nelle celle anche quando la formula fa riferimento a righe che saranno inserite durante il processo di esportazione. Le formule dinamiche possono ripetersi per ogni riga inserita o utilizzare solo la cella in cui è posizionato il marcatore dei dati
Le formule dinamiche consentono le seguenti opzioni aggiuntive:
- r - Numero di riga attuale
- 2, -1 - Offset al numero di riga attuale
Per esempio:
&=&=B{-1}/C{-1}~(skip:1)
Nel marcatore della formula dinamica, “-1” indica l’offset alla riga corrente rispettivamente nelle colonne B e C che verranno impostate per l’operazione di divisione, il parametro di skip è una riga. Inoltre, dovremmo specificare il seguente carattere:
"~"
come carattere separatore per applicare ulteriori parametri nelle formule dinamiche
Le seguenti schermate illustrano una formula dinamica ripetitiva e il foglio di lavoro Excel risultante
File del modello | File di output |
---|---|
La cella “C1” contiene la formula = A1*B1, la cella “C2” contiene = A2*B2 e la cella “C3” contiene = A3*B3 |
È molto semplice elaborare i marcatore intelligenti. Il seguente esempio di codice mostra come utilizzare formule dinamiche nei marcatore intelligenti. Carichiamo il file del modello e creiamo dati di test, elaboriamo i marcatori per riempire i dati nelle celle contro il marcatore
// 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(); | |
} |
Utilizzo di Array Variabili
Il seguente esempio di codice mostra come utilizzare array variabili nei marcatore intelligenti. Inseriamo un marcatore di array variabili nella cella A1 del primo foglio di lavoro del file Excel in modo dinamico che contiene una stringa di valori che impostiamo per il marcatore, elaboriamo i marcatori per riempire i dati nelle celle contro il marcatore. Infine, salviamo il file Excel
// 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"); |
Raggruppamento dei dati
In alcuni report Excel potrebbe essere necessario suddividere i dati in gruppi per renderli più facili da leggere e analizzare. Uno dei principali scopi per suddividere i dati in gruppi è eseguire calcoli (eseguire operazioni di riepilogo) su ciascun gruppo di record
I marcatore intelligenti di Aspose.Cells ti consentono di raggruppare i dati per campi e inserire righe di riepilogo tra i set di dati o gruppi di dati. Ad esempio, se si raggruppano i dati per Customers.CustomerID, è possibile aggiungere un record di riepilogo ogni volta che cambia il gruppo
Parametri
Di seguito sono riportati alcuni dei parametri di smart marker utilizzati per raggruppare i dati.
group:normal/merge/repeat
Supportiamo tre tipi di gruppo tra cui puoi scegliere.
- normale - Il valore del campo di raggruppamento non viene ripetuto per i record corrispondenti nella colonna; invece vengono stampati una volta per gruppo di dati.
- unire - Lo stesso comportamento del parametro normale, eccetto che unisce le celle nel campo di raggruppamento per ciascun insieme di gruppi.
- ripetere - Il valore del campo di raggruppamento viene ripetuto per i record corrispondenti.
Ad esempio: &=Customers.CustomerID(gruppo:unire)
skip
Salta un numero specificato di righe dopo ciascun gruppo.
Ad esempio, &=Employees.EmployeeID(gruppo:normale,saltare:1)
subtotalN
Esegue un’operazione di riepilogo per un dato campo relativo a un campo di raggruppamento. La N rappresenta i numeri tra 1 e 11 che specificano la funzione utilizzata nel calcolo dei subtotali all’interno di un elenco di dati. (1=MEDIA, 2=CONTATORE, 3=CONT.VALORI, 4=MASSIMO, 5=MINIMO,…9=SOMMA ecc.) Consultare il riferimento Subtotali nell’aiuto di Microsoft Excel per ulteriori dettagli.
Il formato effettivo viene specificato come: subtotalN:Rif dove Rif si riferisce alla colonna di raggruppamento.
Ad esempio,
- &=Products.Units(subtotal9:Products.ProductID) specifica la funzione di riepilogo sul campo Units rispetto al campo ProductID nella tabella Products.
- &=Tabx.Col3(subtotal9:Tabx.Col1) specifica la funzione di riepilogo sul campo Col3 raggruppato per Col1 nella tabella Tabx.
- &=Table1.ColumnD(subtotal9:Table1.ColumnA&Table1.ColumnB) specifica la funzione di riepilogo sul campo ColumnD raggruppato per ColumnA e ColumnB nella tabella Table1.
Questo esempio mostra alcuni dei parametri di raggruppamento in azione. Utilizza il database Microsoft Access Northwind.mdb ed estrae i dati dalla tabella chiamata “Dettagli ordine”. Creiamo un file designer chiamato SmartMarker_Designer.xls in Microsoft Excel e inseriamo smart marker in varie celle nei fogli di lavoro. I marker vengono elaborati per riempire i fogli di lavoro. I dati sono collocati e organizzati da un campo di raggruppamento.
Il file designer ha due fogli di lavoro. Nel primo mettiamo smart marker con parametri di raggruppamento come mostrato nello screenshot qui sotto. Sono collocati tre smart marker (con parametri di raggruppamento): &=[Order Details].OrderID(group:merge,skip:1), &=[Dettagli Ordine].Quantità(subtotale9:Dettagli Ordine.IDOrdine), e &=[Dettagli Ordine].PrezzoUnitario(subtotale9:Dettagli Ordine.IDOrdine) vanno in A5, B5 e C5 rispettivamente.
Il primo foglio di lavoro nel file SmartMarker_Designer.xls, completo di smart markers |
---|
Nel secondo foglio di lavoro del file del designer, inseriamo alcuni altri smart marker come mostrato nella figura sottostante. Collochiamo i seguenti smart marker: |
&=[Order Details].OrderID(group:normal), |
&=[Order Details].Quantity, |
&=[Order Details].UnitPrice, |
&=&=B(r)*C(r), e |
&=subtotale9:Dettagli Ordine.IDOrdine in A5, B5, C5, D5 e C6 rispettivamente. |
Il secondo foglio di lavoro del file SmartMarker_Designer.xls, mostrando smart markers misti. |
---|
Qui è riportato il codice sorgente utilizzato nell’esempio. |
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) | |
{ | |
} | |
} |
Utilizzo di Tipi Anonimi o Oggetti Personalizzati
Aspose.Cells supporta anche tipi anonimi o oggetti personalizzati in smart markers. L’esempio seguente mostra come funziona. Per l’importazione di dati da oggetti dinamici utilizzando Smart Markers, visita il seguente articolo:
Importare da oggetto dinamico come origine dati
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; | |
} | |
} |
Smart Marker per Immagini
Gli smart marker di Aspose.Cells supportano anche i marker di immagini. Questa sezione ti mostra come inserire immagini utilizzando smart markers.
Parametri dell’Immagine
Parametri smart marker per gestire le immagini.
- Immagine: AdattaACella - Adatta automaticamente l’immagine all’altezza della riga e alla larghezza della colonna della cella.
- Immagine: ScalaN - Scala altezza e larghezza al N percento.
- Immagine: Larghezza:Npollici&Altezza:Npollici - Rappresenta l’immagine alta N pollici e larga N pollici. È inoltre possibile specificare le posizioni Sinistra e Alto (in punti).
Qui è riportato il codice sorgente utilizzato nell’esempio.
// 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"); |
Utilizzo di Oggetti Annidati
Aspose.Cells supporta oggetti annidati in smart markers, gli oggetti annidati devono essere semplici. Utilizziamo un file di modello semplice. Vedi il foglio di calcolo del designer che contiene alcuni smart markers annidati.
Il primo foglio di calcolo del file SM_NestedObjects.xlsx mostra smart markers annidati. |
---|
L’esempio seguente mostra come funziona. |
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; } | |
} | |
} |
Utilizzo di Lista Generica come Oggetto Annidato
Aspose.Cells ora supporta anche l’utilizzo di una lista generica come oggetto annidato. Si prega di controllare lo screenshot del file Excel di output generato con il codice sottostante. Come si può vedere nello screenshot, un oggetto Teacher contiene più oggetti Student annidati.
// 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"); | |
Utilizzo della proprietà HTML di Smart Markers
The following sample code explains the use of HTML property of the Smart Markers. When it will be processed, it will show “World” in “Hello World” as bold because of HTML tag.
// 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"); | |
Non linea per linea
Il metodo di elaborazione predefinito attuale prevede di elaborare gli smart marker linea per linea. Ma a volte gli smart marker della stessa tabella dati devono essere elaborati insieme, indipendentemente dal fatto che siano nella stessa riga o meno, quindi è necessario specificare un intervallo con nome “_CellsSmartMarkers” e specificare WorkbookDesigner.LineByLine come falso prima di chiamare l’elaborazione. se sono nella stessa riga o meno, allora devi specificare un intervallo denominato “_CellsSmartMarkers” e specificare WorkbookDesigner.LineByLine come falso prima di chiamare l’elaborazione.
||
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; | |
} | |
} |
Ottenere Notifiche durante la Fusione dei Dati con Smart Markers
A volte, potrebbe essere necessario ricevere le notifiche riguardanti il riferimento della cella o il particolare Smart Marker che viene elaborato prima del completamento. Questo può essere realizzato utilizzando la proprietà WorkbookDesigner.CallBack e ISmartMarkerCallBack
Argomenti avanzati
- Aggiunta di Oggetti Anonimi o Personalizzati in SmartMarkers
- Auto Popolare i Dati di Smart Marker in Altri Fogli di Lavoro se i Dati sono Troppo Numerosi
- Formattazione Smart Markers
- Ottenere Notifiche durante la Fusione dei Dati con Smart Markers
- Imposta origine dati personalizzata per WorkbookDesigner
- Mostra apostrofo iniziale nelle celle
- Utilizzo del parametro Formula nel campo di Smart Marker
- Utilizzo di marcatori immagine durante la raggruppamento dei dati in Smart Markers