إدارة الصيغ لملفات Excel

مقدمة

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

كيفية استخدام الصيغ والوظائف

يوفر Aspose.Cells فئة Workbook التي تمثل ملف Microsoft Excel. تحتوي الفئة Workbook على مجموعة Worksheets التي تسمح بالوصول إلى كل ورقة عمل في ملف Excel. تُمثل ورقة العمل بواسطة فئة Worksheet. توفر الفئة Worksheet مجموعة Cells. يمثل كل عنصر في مجموعة Cells كائنًا من الفئة Cell.

من الممكن تطبيق الصيغ على الخلايا باستخدام الخصائص والأساليب التي يقدمها الفئة Cell، كما هو موضح بالتفصيل أدناه.

  • باستخدام الوظائف الداخلية.
  • باستخدام وظائف الإضافة.
  • العمل مع صيغ الصيغة السابقة.
  • إنشاء صيغة R1C1.

كيفية استخدام الوظائف المضمنة

الوظائف المضمنة أو الصيغ يتم توفيرها كوظائف جاهزة لتقليل جهود ووقت المطورين. انظر قائمة الوظائف المضمنة المدعومة بواسطة Aspose.Cells. تم ترتيب الوظائف بترتيب أبجدي. سيتم دعم المزيد من الوظائف في المستقبل.

تدعم Aspose.Cells معظم الصيغ أو الوظائف التي تقدمها Microsoft Excel. يمكن للمطورين استخدام هذه الصيغ من خلال واجهة برمجة التطبيقات API أو جدول البيانات المصمم. تدعم Aspose.Cells مجموعة هائلة من الصيغ الرياضية والنصية والقيم المنطقية والتاريخ/الوقت والإحصائيات وقواعد البيانات والبحث والمراجع.

استخدم خاصية Formula للصف ال Cell لإضافة صيغة إلى خلية. الصيغ المعقدة, مثل

 = H7*(1+IF(P7 = $L$3,$M$3, (IF(P7=$L$4,$M$4,0))))

, مدعومة أيضًا في Aspose.Cells. عند تطبيق صيغة على خلية، يجب دائمًا بدء السلسلة بعلامة يساوي (=) كما تفعل عند إنشاء صيغة في Microsoft Excel واستخدام فاصلة (,) لفصل معلمات الوظيفة.

في المثال أدناه، يتم تطبيق صيغة معقدة على خلية الصفراء من مجموعة Cells. تستخدم الصيغة الوظيفة المضمنة IF المقدمة بواسطة Aspose.Cells.

// 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);
// Instantiating a Workbook object
Workbook workbook = new Workbook();
// Adding a new worksheet to the Excel object
int sheetIndex = workbook.Worksheets.Add();
// Obtaining the reference of the newly added worksheet by passing its sheet index
Worksheet worksheet = workbook.Worksheets[0];
// Adding a value to "A1" cell
worksheet.Cells["A1"].PutValue(1);
// Adding a value to "A2" cell
worksheet.Cells["A2"].PutValue(2);
// Adding a value to "A3" cell
worksheet.Cells["A3"].PutValue(3);
// Adding a SUM formula to "A4" cell
worksheet.Cells["A4"].Formula = "=SUM(A1:A3)";
// Calculating the results of formulas
workbook.CalculateFormula();
// Get the calculated value of the cell
string value = worksheet.Cells["A4"].Value.ToString();
// Saving the Excel file
workbook.Save(dataDir + "output.xls");

كيفية استخدام الوظائف المضافة

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

توفر Aspose.Cells ميزات لتسجيل وظائف الإضافات باستخدام Worksheets.RegisterAddInFunction(). بعد ذلك عند ضبط cell.Formula = anyFunctionFromAddIn، يحتوي ملف Excel الناتج على القيمة المحسوبة من وظيفة الإضافة.

يجب تنزيل ملف XLAM التالي لتسجيل وظيفة الإضافة في عينة الكود أدناه. بالمثل، يمكن تنزيل الملف الناتج “test_udf.xlsx” لفحص الناتج.

TestUDF.xlam

test_udf.xlsx

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// Create empty workbook
Workbook workbook = new Workbook();
// Register macro enabled add-in along with the function name
int id = workbook.Worksheets.RegisterAddInFunction(sourceDir + @"TESTUDF.xlam", "TEST_UDF", false);
// Register more functions in the file (if any)
workbook.Worksheets.RegisterAddInFunction(id, "TEST_UDF1"); //in this way you can add more functions that are in the same file
// Access first worksheet
Worksheet worksheet = workbook.Worksheets[0];
// Access first cell
var cell = worksheet.Cells["A1"];
// Set formula name present in the add-in
cell.Formula = "=TEST_UDF()";
// Save workbook to output XLSX format.
workbook.Save(outputDir + @"test_udf.xlsx", Aspose.Cells.SaveFormat.Xlsx);

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

صيغ المصفوفة هي صيغ تأخذ مصفوفات، بدلاً من الأرقام الفردية، كتغيرات لوظائف تكون الصيغة. عند عرض صيغة المصفوفة، يكون محاطًا بالأقواس الإعتيادية ({}).

تعيد بعض وظائف Microsoft Excel مصفوفات القيم. لحساب نتائج متعددة باستخدام صيغة مصفوفة، أدخل المصفوفة في نطاق الخلايا بعدد الصفوف والأعمدة نفس معدلات الوسائط المصفوفات.

من الممكن تطبيق صيغة مصفوفة على خلية عن طريق استدعاء الوظيفة SetArrayFormula الخاصة بفئة Cell. تأخذ الوظيفة SetArrayFormula معلمات التالية:

  • صيغة مصفوفة, صيغة المصفوفة.
  • عدد الصفوف, عدد الصفوف لملء نتيجة صيغة المصفوفة. عدد الأعمدة
// 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);
// Instantiating a Workbook object
Workbook workbook = new Workbook();
// Adding a new worksheet to the Excel object
int sheetIndex = workbook.Worksheets.Add();
// Obtaining the reference of the newly added worksheet by passing its sheet index
Worksheet worksheet = workbook.Worksheets[sheetIndex];
// Adding a value to "A1" cell
worksheet.Cells["A1"].PutValue(1);
// Adding a value to "A2" cell
worksheet.Cells["A2"].PutValue(2);
// Adding a value to "A3" cell
worksheet.Cells["A3"].PutValue(3);
// Adding a value to B1
worksheet.Cells["B1"].PutValue(4);
// Adding a value to "B2" cell
worksheet.Cells["B2"].PutValue(5);
// Adding a value to "B3" cell
worksheet.Cells["B3"].PutValue(6);
// Adding a value to C1
worksheet.Cells["C1"].PutValue(7);
// Adding a value to "C2" cell
worksheet.Cells["C2"].PutValue(8);
// Adding a value to "C3" cell
worksheet.Cells["C3"].PutValue(9);
// Adding a SUM formula to "A4" cell
worksheet.Cells["A6"].SetArrayFormula("=LINEST(A1:A3,B1:C3,TRUE,TRUE)", 5, 3);
// Calculating the results of formulas
workbook.CalculateFormula();
// Get the calculated value of the cell
string value = worksheet.Cells["A6"].Value.ToString();
// Saving the Excel file
workbook.Save(dataDir + "output.xls");

كيفية استخدام الصيغة R1C1

أضف صيغة مرجعية R1C1 إلى خلية مع خاصية فئة Cell وخاصية R1C1Formula.

// 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);
// Instantiating a Workbook object
Workbook workbook = new Workbook(dataDir + "Book1.xls");
Worksheet worksheet = workbook.Worksheets[0];
// Setting an R1C1 formula on the "A11" cell,
// Row and Column indeces are relative to destination index
worksheet.Cells["A11"].R1C1Formula = "=SUM(R[-10]C[0]:R[-7]C[0])";
// Saving the Excel file
workbook.Save(dataDir + "output.xls");

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