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

مقدمة

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

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

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

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

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

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

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

& = مصدر البيانات & = [مصدر البيانات]. [اسم الحقل] & = $ VariableName & = $ VariableArray & == الصيغة الديناميكية & = & = RepeatDynamicFormula

حدود

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

  • لا إضافة - لا تقم بإضافة صفوف إضافية لتناسب البيانات.
  • تخطي: - تخطي عدد n من الصفوف لكل صف من البيانات.
  • تصاعدي: أوتنازلي: n - فرز البيانات في علامات ذكية. إذا كان n هو 1 ، فإن العمود هو المفتاح الأول للفرز. يتم فرز البيانات بعد معالجة مصدر البيانات. على سبيل المثال: & = Table1.Field3 (تصاعدي: 1).
  • عرضي - اكتب البيانات من اليسار إلى اليمين ، بدلاً من كتابة البيانات من أعلى إلى أسفل.
  • رقمي - تحويل النص إلى رقم إن أمكن.
  • تحول - التحول لأسفل أو لليمين ، وإنشاء صفوف أو أعمدة إضافية لتناسب البيانات. تعمل معلمة التحول بنفس الطريقة كما في Microsoft Excel. على سبيل المثال في Microsoft Excel ، عند تحديد نطاق من الخلايا ، انقر بزر الماوس الأيمن وحددإدراج وتحديدتحول الخلايا إلى أسفل, خلايا تحول الحق وخيارات أخرى. باختصار ، فإنتحول تملأ المعلمة نفس الوظيفة للعلامات الذكية الرأسية / العادية (من أعلى إلى أسفل) أو الأفقية (من اليسار إلى اليمين).
  • نسخة - انسخ نمط الخلية الأساسية إلى جميع الخلايا في هذا العمود.

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

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

توضح لقطات الشاشة التالية كيفية إدراج البيانات في كل صف آخر.

ملف نموذجي ملف إلاخراج
ما يجب القيام به: image_بديل_نص ما يجب القيام به: image_بديل_نص

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

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

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

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

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

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

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

 "~"

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

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

ملف نموذجي ملف إلاخراج
ما يجب القيام به: image_بديل_نص ما يجب القيام به: image_بديل_نص
Cell يحتوي “C1” على الصيغة**= A1 * B1** تحتوي الخلية “C2” على**= A2 * B2** وتحتوي الخلية “C3” على**= A3 * B3**.

من السهل جدًا معالجة العلامات الذكية. فيما يلي مقتطفان من التعليمات البرمجية ، أحدهما في C# والآخر في VB ، يوضح كيف يتم ذلك.

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

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

يوضح رمز المثال التالي كيفية استخدام المصفوفات المتغيرة في Smart Markers. نضع علامة صفيف متغيرة في خلية 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 بتجميع البيانات حسب المجالات ووضع صفوف التلخيص بين مجموعات البيانات أو مجموعات البيانات. على سبيل المثال ، في حالة تجميع البيانات حسب Customer.CustomerID ، يمكنك إضافة سجل ملخص في كل مرة تتغير فيها المجموعة.

حدود

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

المجموعة: عادي / دمج / كرر

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

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

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

تخطى

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

على سبيل المثال ، & = Employees.EmployeeID (مجموعة: عادي ، تخطي: 1)

المجموع الفرعي

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

يوضح التنسيق في الواقع على النحو التالي: المجموع الفرعي N: المرجع حيث يشير المرجع إلى المجموعة حسب العمود.

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

  • & = Products.Units (الإجمالي الفرعي 9: Products.ProductID) تحدد وظيفة التلخيص عليهاالوحدات المجال فيما يتعلقمعرف المنتج المجال فيمنتجات الطاولة.
  • & = Tabx.Col3 (المجموع الفرعي 9: Tabx.Col1) يحدد دالة التلخيص على ملفCol3 المجموعة الميدانيةالعمود 1 في الطاولةتابكس.
  • & = Table1.ColumnD (المجموع الفرعي 9: Table1.ColumnA & Table1.ColumnB) يحدد وظيفة التلخيص عندالعمود د المجموعة الميدانيةالعمود والعمود ب في الطاولةالجدول 1.

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

يحتوي ملف المصمم على ورقتي عمل. في البداية ، وضعنا علامات ذكية مع معلمات تجميع كما هو موضح في لقطة الشاشة أدناه. يتم وضع ثلاث علامات ذكية (مع معلمات التجميع): & = [تفاصيل الطلب] .OrderID (مجموعة: دمج ، تخطي: 1) ، & = [تفاصيل الطلب]. الكمية (الإجمالي الفرعي 9: تفاصيل الطلب. معرف الطلب) ، و & = [تفاصيل الطلب]. سعر الوحدة (الإجمالي الفرعي 9: تفاصيل الطلب. معرف الطلب) انتقل إلى A5 و B5 و C5 على التوالي.

ورقة العمل الأولى في ملف SmartMarker_Designer.xls ، كاملة بالعلامات الذكية
ما يجب القيام به: image_بديل_نص
في ورقة العمل الثانية من ملف المصمم ، نضع بعض العلامات الذكية كما هو موضح في الشكل أدناه. نضع العلامات الذكية التالية:
& = [تفاصيل الطلب] .OrderID (مجموعة: عادي) ،
& = [تفاصيل الطلب]. الكمية ،
& = [تفاصيل الطلب] .UnitPrice،
& = & = B (r) * C (r) و
& = المجموع الفرعي 9: تفاصيل الطلب. معرف الطلب في A5 و B5 و C5 و D5 و C6 على التوالي.
ورقة العمل الثانية من ملف SmartMarker_Designer.xls ، تعرض علامات ذكية مختلطة.
ما يجب القيام به: image_بديل_نص
هنا هو كود المصدر المستخدم في المثال.
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 أيضًا الأنواع المجهولة أو العناصر المهيأة في العلامات الذكية. يوضح المثال التالي كيفية عمل ذلك ، لاستيراد البيانات من كائنات ديناميكية باستخدام Smart Markers ، قم بزيارة المقالة التالية:

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

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 علامات الصور أيضًا. يوضح لك هذا القسم كيفية إدراج الصور باستخدام العلامات الذكية.

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

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

  • الصورة: FitToCell - احتواء الصورة تلقائيًا مع ارتفاع صف الخلية وعرض العمود.
  • الصورة: ScaleN - مقياس الارتفاع والعرض إلى نسبة N.
  • الصورة: العرض: Nin & Height: Nin - جعل الصورة بارتفاع 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 العلامات الذكية المتداخلة.
ما يجب القيام به: image_بديل_نص
المثال التالي يوضح كيف يعمل هذا.
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 الآن أيضًا استخدام الكشف العام كعنصر متداخل. يرجى التحقق من لقطة الشاشة لملف excel الناتج الذي تم إنشاؤه بالرمز التالي. كما ترى في لقطة الشاشة ، يحتوي كائن المدرس على كائنات طالب متداخلة متعددة.

ما يجب القيام به: image_بديل_نص
// 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 للعلامات الذكية

يوضح نموذج التعليمات البرمجية التالي استخدام خاصية HTML للعلامات الذكية. عند معالجتها ، ستظهر “World” في “Hello World” بالخط العريض بسبب HTML بطاقة شعار.

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

لا سطرا بسطر

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

|ما يجب القيام به: image_بديل_نص|

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

موضوعات مسبقة