استيراد ووضع البيانات بذكاء باستخدام العلامات الذكية

مقدمة

العناصر الذكية تُستخدم لإعلام Aspose.Cells عن المعلومات التي يجب وضعها في جدول بيانات Microsoft Excel القالبي. تتيح العناصر الذكية لك إنشاء قوالب تحتوي فقط على معلومات وتنسيقات محددة.

الجدول البياني للمصمم والعلامات الذكية

الأوراق العمل المصممة هي ملفات Excel القياسية التي تحتوي على تنسيقات بصرية وصيغ وعلامات ذكية. يمكن أن تحتوي على علامات ذكية تشير إلى مصدر بيانات واحد أو أكثر، مثل معلومات من مشروع ومعلومات لجهات الاتصال ذات الصلة. يتم كتابة العلامات الذكية في الخلايا حيث ترغب في الحصول على المعلومات.

تبدأ جميع العلامات الذكية بـ &=. مثال لعلامة بيانات هو &=اسمالطرف. إذا أدى مؤشر البيانات إلى أكثر من عنصر واحد، على سبيل المثال، صف كامل، فإن الصفوف التالية تتحرك تلقائيًا لتفسح المساحة للمعلومات الجديدة. بالتالي، يمكن وضع المجموعات الفرعية والإجماليات على الصف بشكل فوري بعد مؤشر البيانات لإجراء حسابات استنادًا إلى المعلومات المُدخلة. لإجراء حسابات على الصفوف المدخلة، استخدم الصيغ الدينامية.

تتكون العلامات الذكية من أجزاء مصدر البيانات واسم الحقل لمعظم المعلومات. قد يتم أيضًا تمرير معلومات خاصة باستخدام المتغيرات ومصفوفات المتغيّرات. تملأ المتغيّرات دائمًا خلية واحدة فقط بينما قد تملأ مصفوفات المتغيّرات عدة. استخدم فقط علامة بيانات واحدة لكل خلية. يتم إزالة العلامات الذكية غير المستخدمة.

قد تحتوي العلامة الذكية أيضًا على معلمات. تتيح لك المعلمات تعديل كيفية توزيع المعلومات. يتم إضافتها إلى نهاية العلامة الذكية بين قوسين كفاصلة مفصولة.

خيارات العلامة الذكية

&=مصدر البيانات.اسم الحقل &=[مصدر البيانات].[اسم الحقل] &=$اسم المتغير &=$مصفوفة_المتغيرات &==الصيغة_الديناميكية &=&=تكرار_الصيغة_الديناميكية

معلمات

يُسمح بالمعلمات التالية:

  • noadd - عدم إضافة صفوف إضافية لتناسب البيانات.
  • skip:n - تخطي n عدد من الصفوف لكل صف من البيانات.
  • تصاعدي:n أو تنازلي:n - ترتيب البيانات في العلامات الذكية. إذا كان n هو 1، فإن العمود هو المفتاح الأول لمُرتب. يتم فرز البيانات بعد معالجة مصدر البيانات. على سبيل المثال: &=جدول1.حقل3(تصاعدي:1).
  • أفقي - اكتب البيانات من اليسار إلى اليمين بدلاً من الأعلى إلى الأسفل.
  • رقمي - تحويل النص إلى رقم إذا كان ذلك ممكنًا.
  • shift - تحريك البيانات إلى الأسفل أو اليمين، مما يخلق صفوفًا أو أعمدة إضافية لتناسب البيانات. يعمل المعلم الإضافي بنفس الطريقة كما هو الحال في Microsoft Excel. على سبيل المثال، في Microsoft Excel، عند تحديد مجموعة من الخلايا، بنقرة يمين الزر واختيار Insert ثم تحديد shift cells down، shift cells right وخيارات أخرى. بإختصار، يقوم المعلم shift بأداء نفس الوظيفة للعلامات الذكية الرأسية/العادية (من الأعلى إلى الأسفل) أو الأفقية (من اليسار إلى اليمين).
  • نسخالأسلوب - استنساخ أسلوب الخلية الأساسية إلى جميع الخلايا في ذلك العمود.

يمكن دمج المعلمات noadd و skip لإدخال البيانات في الصفوف البديلة. نظرًا لأن القالب يتم معالجته من الأسفل إلى الأعلى ، يجب إضافة noadd في الصف الأول لتجنب إدراج صفوف إضافية قبل الصف البديل.

إذا كان لديك عدة معلمات، فاسمح بفصلها بفواصل، ولكن بدون مسافة: معلمة أ، معلمة ب، معلمة ج

تُظهر الصور التوضيحية التالية كيفية إدراج البيانات في كل صف آخر.

ملف القالب ملف الإخراج
todo:image_alt_text todo:image_alt_text

الصيغ الديناميكية

تتيح الصيغ الديناميكية لك إدراج صيغ Excel في الخلايا حتى عندما تشير الصيغة إلى الصفوف التي سيتم إدراجها أثناء عملية التصدير. يمكن للصيغ الديناميكية أن تتكرر لكل صف تم إدراجه أو تستخدم فقط الخلية التي يتم وضع علامة البيانات فيها.

تسمح الصيغ الديناميكية بالخيارات الإضافية التالية:

  • r - رقم الصف الحالي.
  • 2، -1 - الإزاحة إلى رقم الصف الحالي.

على سبيل المثال:

 &=&=B{-1}/C{-1}~(skip:1)

في علامة الصيغة الديناميكية ، “-1” يعني التحريك إلى الصف الحالي في الأعمدة B و C على التوالي والتي سيتم تعيينها لعملية القسمة ، المعلمة التخطي هي صف واحد. علاوة على ذلك ، يجب علينا تحديد الحرف التالي:

 "~"

كحرف فاصل لتطبيق المعلمات الإضافية في الصيغ الديناميكية.

توضح اللقطات الشاشة التالية صيغة ديناميكية متكررة وورقة Excel الناتجة.

ملف القالب ملف الإخراج
todo:image_alt_text todo:image_alt_text
الخلية “C1” تحتوي على الصيغة = A1*B1 ، والخلية “C2” تحتوي على = A2*B2 والخلية “C3” تحتوي على = A3*B3.

من السهل جدًا معالجة العلامات الذكية. يوضح الكود المثال التالي كيفية استخدام الصيغ الديناميكية في العلامات الذكية. نقوم بتحميل ملف القالب وإنشاء بيانات اختبارية، ثم معالجة العلامات لملء البيانات في الخلايا مقابل العلامة.

// 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();
}

استخدام مصفوفات متغيرة

يوضح الكود المثالي التالي كيفية استخدام متغيرات الصفوف في العلامات الذكية. نضع علامة صفوف متغيرة في الخلية A1 للورقة العمل الأولى للدفتر بشكل ديناميكي والتي تحتوي على سلسلة من القيم التي نحددها للعلامة، نقوم بمعالجة العلامات لملء البيانات في الخلايا ضد العلامة. أخيرًا نقوم بحفظ ملف 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");

تجميع البيانات

في بعض تقارير Excel قد تحتاج إلى تقسيم البيانات إلى مجموعات لجعلها أسهل قراءة وتحليل. أحد الأغراض الرئيسية لتقسيم البيانات إلى مجموعات هو تشغيل الحسابات (أداء عمليات ملخصية) على كل مجموعة من السجلات.

تسمح علامات الذكاء في Aspose.Cells لك بتجميع البيانات حسب الحقول ووضع صفوف ملخصية بين مجموعات البيانات أو المجموعات البيانية. على سبيل المثال، إذا تم تجميع البيانات حسب Customers.CustomerID، يمكنك إضافة سجل ملخص في كل مرة يتغير فيها المجموعة.

معلمات

فيما يلي بعض معلمات العلامات الذكية المستخدمة لتجميع البيانات.

group:normal/merge/repeat

نحن ندعم ثلاثة أنواع من التجميع يمكنك الاختيار بينها.

  • عادي - قيمة الحقل (أو الحقول) المجمعة لن تُكرر للسجلات المقابلة في العمود؛ بدلاً من ذلك، يتم طباعتها مرة واحدة لكل مجموعة من البيانات.
  • دمج - نفس السلوك كما في المعلمة العادية، باستثناء أنها تدمج الخلايا في الحقل (أو الحقول) المجمعة لكل مجموعة محددة.
  • تكرار - تُكرر قيمة الحقل (أو الحقول) المجمعة للسجلات المقابلة.

على سبيل المثال: &=Customers.CustomerID(group:merge)

skip

تخطي عدد محدد من الصفوف بعد كل مجموعة.

على سبيل المثال, &=Employees.EmployeeID(group:normal,skip:1)

subtotalN

يؤدي عملية ملخصية لبيانات حقل محددة متعلقة بحقل مجمعة. N يمثل الأرقام بين 1 و 11 التي تحدد الوظيفة المستخدمة عند حساب المجاميع الفرعية داخل قائمة البيانات. (1=متوسط، 2=عدد، 3=COUNTA، 4=MAX، 5=MIN، … 9=SUM إلخ.) راجع المرجع Subtotal في مساعدة Microsoft Excel لمزيد من التفاصيل.

التنسيق ينص بالفعل على: subTotalN:Ref حيث يشير Ref إلى العمود الذي يتم التجميع حسبه.

على سبيل المثال،

  • &=Products.Units(subtotal9:Products.ProductID) يُحدد وظيفة الملخص عن حقل Units بالنسبة لحقل ProductID في جدول Products.
  • &=Tabx.Col3(subtotal9:Tabx.Col1) يُحدد وظيفة الملخص عن حقل Col3 حسب Col1 في الجدول Tabx.
  • &=Table1.ColumnD(subtotal9:Table1.ColumnA&Table1.ColumnB) يحدد وظيفة التلخيص على الحقل ColumnD وفقًا لColumnA و ColumnB في الجدول Table1.

يظهر هذا المثال بعض معلمات التجميع في العمل. يستخدم قاعدة بيانات Microsoft Access بمسمى Northwind.mdb ويستخرج البيانات من الجدول الذي يحمل اسم “تفاصيل الطلب”. ننشئ ملف مصمم يسمى SmartMarker_Designer.xls في Microsoft Excel ونضع علامات ذكية في الخلايا المختلفة في ورقات العمل. يتم معالجة العلامات لملء ورقات العمل. يتم وضع البيانات وتنظيمها حسب حقل تجميع.

يحتوي الملف المصمم على ورقتي عمل. في الأولى نضع علامات ذكية مع معلمات التجميع كما هو مبين في اللقطة أدناه. يتم وضع ثلاث علامات ذكية (بمعلمات تجميع) كما يلي: &=[Order Details].OrderID(group:merge,skip:1), &=[Order Details].Quantity(subtotal9:Order Details.OrderID), و &=[Order Details].UnitPrice(subtotal9:Order Details.OrderID) تذهب إلى A5, B5 و C5 على التوالي.

الورقة العمل الأولى في ملف SmartMarker_Designer.xls، مكتملة بعلامات ذكية
todo:image_alt_text
في الورقة العمل الثانية من ملف المصمم، نضع بعض العلامات الذكية كما هو موضح في الشكل أدناه. نضع العلامات الذكية التالية:
&=[Order Details].OrderID(group:normal),
&=[Order Details].Quantity,
&=[Order Details].UnitPrice,
&=&=B(r)*C(r) و
&=subtotal9:Order Details.OrderID إلى A5، B5، C5، D5 و C6 على التوالي.
الصفحة العملية الثانية لملف SmartMarker_Designer.xls، تظهر علامات ذكية مختلطة.
todo:image_alt_text
هنا هو الشيفرة المصدر المستخدمة في المثال.
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)
{
}
}

استخدام أنواع مجهولة أو كائنات مخصصة

تدعم Aspose.Cells أيضًا أنواع الكائنات المجهولة أو الكائنات المخصصة في العلامات الذكية. يظهر المثال التالي كيف يعمل هذا. لاستيراد البيانات من الكائنات الديناميكية باستخدام العلامات الذكية، قم بزيارة المقالة التالية:

استيراد من كائن ديناميكي كمصدر بيانات

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;
}
}

علامات الصورة

تدعم علامات Aspose.Cells الذكية أيضًا علامات الصور. توفر هذه القسم لك كيفية إدراج الصور باستخدام العلامات الذكية.

معلمات الصور

معلمات العلامة الذكية لإدارة الصور.

  • الصورة: تناسب الخلية - تكييف الصورة تلقائيًا مع ارتفاع الصف وعرض العمود.
  • الصورة: مقياس N - تغيير حجم الارتفاع والعرض إلى N في المئة.
  • صورة: العرض: N في البوصة والارتفاع: N في البوصة - عرض الصورة بارتفاع N بالبوصة وعرض N بالبوصة. يمكنك أيضًا تحديد مواقع اليسار والأعلى (بالنقاط).

هنا هو الشيفرة المصدر المستخدمة في المثال.

// 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");

استخدام الكائنات المتداخلة

تدعم Aspose.Cells الكائنات المتدرجة في العلامات الذكية، ويجب أن تكون الكائنات المتدرجة بسيطة. نحن نستخدم ملف قالب بسيط. راجع جدول التصميم الذي يحتوي على بعض العلامات الذكية المتدرجة.

الصفحة العملية الأولى لملف SM_NestedObjects.xlsx التي تظهر علامات ذكية متدرجة.
todo:image_alt_text
المثال التالي يوضح كيف يعمل هذا.
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; }
}
}

استخدام قائمة عامة ككائن متداخل

تدعم Aspose.Cells الآن أيضًا استخدام القائمة العامة ككائن متداخل. يرجى التحقق من لقطة الشاشة لملف الإكسل الناتج الذي تم إنشاؤه بالشيفرة التالية. كما يمكنك رؤية في لقطة الشاشة أنَّ كائن المعلم يحتوي على عدة كائنات متداخلة للطلاب.

todo:image_alt_text
// 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");

استخدام خاصية HTML للعلامات الذكية

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");

ليس بشكل سطري

الطريقة الحالية الافتراضية للمعالجة هي معالجة العناصر الذكية بشكل سطري. ولكن في بعض الأحيان، يحتاج علامات الذكاء الذكية في نفس جدول البيانات إلى أن تتم معالجتها معًا، بغض النظر عما إذا كانت في نفس الصف أم لا، فيجب عليك تحديد نطاق مسمى “_CellsSmartMarkers” وتحديد WorkbookDesigner.LineByLine بأنها خطأ قبل استدعاء المعالجة. الحصول على الإشعارات أثناء دمج البيانات مع علامات ذكاء

|todo:image_alt_text|

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;
}
}

الحصول على إشعارات أثناء دمج البيانات باستخدام العلامات الذكية

في بعض الأحيان، قد يكون من الضروري الحصول على إشعارات حول مرجع الخلية أو العلامة الذكية الخاصة التي يتم معالجتها قبل الاكتمال. يمكن تحقيق ذلك باستخدام خاصية WorkbookDesigner.CallBack و ISmartMarkerCallBack

مواضيع متقدمة