قم بإنشاء ملفات Excel في C++

في السابق ، كنت قد كتبت منشورًا حول كيفية تنفيذ ميزات أتمتة Excel وإنشاء ملفات Excel XLS / XLSX من البداية باستخدام C#. اليوم ، سأوضح لك كيفية إنشاء مصنفات Excel ، وإدراج البيانات في أوراق عمل Excel ، وحساب الصيغ ، وإنشاء المخططات والجداول في أوراق العمل باستخدام C++. سيتم تشغيل جميع ميزات أتمتة جداول البيانات بواسطة C++ Excel API - Aspose.Cells for C++.

Aspose.Cells for C++ هي مكتبة C++ أصلية تتيح لك إنشاء مستندات جداول بيانات وقراءتها وتحليلها وتحويلها دون الحاجة إلى Microsoft Excel. يوفر مجموعة كاملة من ميزات أتمتة Excel التي يمكن استخدامها لإنشاء جداول بيانات XLS / XLSX ومعالجتها. في هذه المقالة ، سنغطي الميزات التالية لإنشاء ملفات Excel XLS / XLSX من البداية.

C++ Excel Spreadsheet API - التثبيت

يمكنك تنزيل الحزمة الكاملة لملفات مكتبة Aspose.Cells لـ C++ من قسم التنزيلات. تحتوي الحزمة أيضًا على نموذج جاهز للتشغيل لتطبيق وحدة التحكم.

إنشاء ملفات Excel (XLS / XLSX) باستخدام C++

يتيح أولاً إنشاء مصنف Excel XLSX بسيط من البداية. يتكون المصنف من ورقة عمل واحدة أو عدة أوراق عمل وتحتوي كل ورقة عمل على البيانات في شكل صفوف وأعمدة. لذلك ، من أجل إنشاء جدول بيانات Excel ، تحتاج إلى إنشاء مصنف أولاً ثم إضافة أوراق العمل فيه. فيما يلي خطوات إنشاء ملف Excel باستخدام Aspose.Cells لـ C++.

  • قم بإنشاء كائن من فئة IWorkbook.
  • احصل على ورقة العمل الأولى (التي تم إنشاؤها افتراضيًا) من المصنف في كائن IWorksheet من IWorksheetCollection.
  • قم بالوصول إلى خلايا ورقة العمل في كائن ICells باستخدام طريقة IWorksheet-> GetICells().
  • قم بالوصول إلى الخلية المطلوبة من ورقة العمل إلى كائن ICell باستخدام طريقة ICells-> GetObjectByIndex() عن طريق تحديد فهرس الصف والعمود.
  • أضف قيمة إلى الخلية باستخدام طريقة ICell-> PutValue().
  • احفظ المصنف كملف .xlsx باستخدام طريقة IWorkbook-> Save().

يُظهر نموذج التعليمات البرمجية التالي كيفية إنشاء ملف Excel XLSX باستخدام C++.

/*create a new workbook*/
intrusive_ptr<IWorkbook> wb = Factory::CreateIWorkbook();

/*get the first worksheet*/
intrusive_ptr<IWorksheetCollection> wsc = wb->GetIWorksheets();
intrusive_ptr<IWorksheet> ws = wsc->GetObjectByIndex(0);

/*get cell(0,0)*/
intrusive_ptr<ICells> cells = ws->GetICells();
intrusive_ptr<ICell> cell = cells->GetObjectByIndex(0, 0);

/*write "Hello World" to cell(0,0) of the first sheet*/
intrusive_ptr<String> str = new String("Hello World!");
cell->PutValue(str);

/*save this workbook to resultFile folder*/
wb->Save(resultPath->StringAppend(new String("workbook.xlsx")));

مصنف Excel

فيما يلي لقطة شاشة لمصنف Excel الذي أنشأناه للتو.

قم بإنشاء Excel XLSX في C++

أضف البيانات إلى ورقة عمل Excel باستخدام C++

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

يوضح نموذج التعليمات البرمجية التالي كيفية إنشاء مصنف Excel XLSX وإدراج البيانات فيه باستخدام C++.

//مسار ملف اكسل الناتج
StringPtr outputData = resultPath->StringAppend(new String("outputData.xlsx"));

//قراءة ملف إكسل الإدخال
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

//الوصول إلى ورقة العمل الثانية في ملف Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

//إضافة قيمة سلسلة إلى الخلية
worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue("Hello World");

//إضافة قيمة مزدوجة إلى الخلية
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(20.5);

//إضافة قيمة عددية إلى الخلية
worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(15);

//إضافة قيمة منطقية إلى الخلية
worksheet->GetICells()->GetObjectByIndex(new String("A4"))->PutValue(true);

//ضبط تنسيق عرض التاريخ
intrusive_ptr<ICell> cell = worksheet->GetICells()->GetObjectByIndex(new String("A5"));
intrusive_ptr<IStyle> style = cell->GetIStyle();
style->SetNumber(15);
cell->SetIStyle(style);

//احفظ المصنف
workbook->Save(outputData);

حساب صيغ المصنف باستخدام C++

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

يوضح نموذج التعليمات البرمجية التالي كيفية إضافة الصيغ وحسابها في مصنف Excel XLSX باستخدام C++.

//قم بإنشاء مصنف جديد
intrusive_ptr<IWorkbook> wb = Factory::CreateIWorkbook();

//احصل على ورقة العمل الأولى التي تم إنشاؤها افتراضيًا
intrusive_ptr<IWorksheet> ws = wb->GetIWorksheets()->GetObjectByIndex(0);

//إضافة قيمة إلى الخلية "A1"
intrusive_ptr<ICell> cell = ws->GetICells()->GetObjectByIndex(new String("A1"));
cell->PutValue(5);

//إضافة قيمة إلى الخلية "A2"
cell = ws->GetICells()->GetObjectByIndex(new String("A2"));
cell->PutValue(15);

//إضافة قيمة إلى الخلية "A3"
cell = ws->GetICells()->GetObjectByIndex(new String("A3"));
cell->PutValue(25);

//إضافة صيغة SUM إلى الخلية "A4"
cell = ws->GetICells()->GetObjectByIndex(new String("A4"));
cell->SetFormula(new String("=SUM(A1:A3)"));

//حساب نتائج الصيغ
wb->CalculateFormula();

//احصل على القيمة المحسوبة للخلية "A4" واطبعها على وحدة التحكم
cell = ws->GetICells()->GetObjectByIndex(new String("A4"));
StringPtr sCalcuInfo = new String(L"Calculated Value of Cell A4: ");
Console::WriteLine(sCalcuInfo->StringAppend(cell->GetStringValue()));

قم بإنشاء جداول في ورقة عمل Excel باستخدام C++

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

  • قم بإنشاء مصنف Excel جديد باستخدام فئة IWorkbook.
  • قم بالوصول إلى ورقة العمل الافتراضية في كائن IWorksheet أو أضف واحدة جديدة.
  • أدخل القيمة / البيانات في الخلايا بنفس الطريقة التي فعلناها في المثال السابق.
  • أضف نطاق الخلايا إلى مجموعة قوائم ورقة العمل باستخدام طريقة IWorksheet-> GetIListObjects() -> Add().
  • احصل على القائمة في كائن IListObject.
  • تطبيق النمط على الجدول باستخدام طريقة IListObject-> SetTableStyleType().
  • احفظ المصنف كملف .xlsx.

يوضح نموذج التعليمات البرمجية التالي كيفية إنشاء جدول في ملف Excel XLSX باستخدام C++.

// إنشاء كائن مصنف
intrusive_ptr<IWorkbook>  workbook = Factory::CreateIWorkbook();

// الحصول على مرجع ورقة العمل الافتراضية (الأولى)
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// الحصول على مجموعة خلايا ورقة العمل
intrusive_ptr<ICells> cells = worksheet->GetICells();

// تحديد قيمة الخلايا
cells->GetObjectByIndex(new String("A1"))->PutValue("Employee");
cells->GetObjectByIndex(new String("B1"))->PutValue("Quarter");
cells->GetObjectByIndex(new String("C1"))->PutValue("Product");
cells->GetObjectByIndex(new String("D1"))->PutValue("Continent");
cells->GetObjectByIndex(new String("E1"))->PutValue("Country");
cells->GetObjectByIndex(new String("F1"))->PutValue("Sale");

cells->GetObjectByIndex(new String("A2"))->PutValue("David");
cells->GetObjectByIndex(new String("A3"))->PutValue("David");
cells->GetObjectByIndex(new String("A4"))->PutValue("David");
cells->GetObjectByIndex(new String("A5"))->PutValue("David");
cells->GetObjectByIndex(new String("A6"))->PutValue("James"); 

cells->GetObjectByIndex(new String("B2"))->PutValue(1);
cells->GetObjectByIndex(new String("B3"))->PutValue(2);
cells->GetObjectByIndex(new String("B4"))->PutValue(3);
cells->GetObjectByIndex(new String("B5"))->PutValue(4);
cells->GetObjectByIndex(new String("B6"))->PutValue(1); 

cells->GetObjectByIndex(new String("C2"))->PutValue("Maxilaku");
cells->GetObjectByIndex(new String("C3"))->PutValue("Maxilaku");
cells->GetObjectByIndex(new String("C4"))->PutValue("Chai");
cells->GetObjectByIndex(new String("C5"))->PutValue("Maxilaku");
cells->GetObjectByIndex(new String("C6"))->PutValue("Chang"); 

cells->GetObjectByIndex(new String("D2"))->PutValue("Asia");
cells->GetObjectByIndex(new String("D3"))->PutValue("Asia");
cells->GetObjectByIndex(new String("D4"))->PutValue("Asia");
cells->GetObjectByIndex(new String("D5"))->PutValue("Asia");
cells->GetObjectByIndex(new String("D6"))->PutValue("Europe"); 

cells->GetObjectByIndex(new String("E2"))->PutValue("China");
cells->GetObjectByIndex(new String("E3"))->PutValue("India");
cells->GetObjectByIndex(new String("E4"))->PutValue("Korea");
cells->GetObjectByIndex(new String("E5"))->PutValue("India");
cells->GetObjectByIndex(new String("E6"))->PutValue("France"); 

cells->GetObjectByIndex(new String("F2"))->PutValue(2000);
cells->GetObjectByIndex(new String("F3"))->PutValue(500);
cells->GetObjectByIndex(new String("F4"))->PutValue(1200);
cells->GetObjectByIndex(new String("F5"))->PutValue(1500);
cells->GetObjectByIndex(new String("F6"))->PutValue(500);  


// إضافة كائن قائمة جديد إلى ورقة العمل
worksheet->GetIListObjects()->Add(new String("A1"), new String("F6"), true);
intrusive_ptr<IListObject> listObject = worksheet->GetIListObjects()->GetObjectByIndex(0);

// إضافة النمط الافتراضي إلى الجدول
listObject->SetTableStyleType(TableStyleType_TableStyleMedium10);

// إظهار المجموع
listObject->SetShowTotals(true);

// حفظ ملف Excel
workbook->Save(resultPath->StringAppend(new String("Excel_Table.xlsx")));

مصنف Excel مع جدول

إنشاء جدول في Excel في C++

قم بإنشاء مخططات في جدول بيانات Excel باستخدام C++

تُستخدم المخططات في جداول بيانات Excel لتصور البيانات باستخدام أنواع مختلفة من الكائنات الرسومية. إنها تعطينا نظرة ثاقبة وفهمًا سريعًا للبيانات خاصة عندما تكون البيانات ضخمة. يدعم Aspose.Cells لـ C++ مجموعة متنوعة من المخططات بما في ذلك Sunburst و Treemap و Histogram و Pyramid و Bubble و Line و أكثر من ذلك. فيما يلي خطوات إنشاء مخطط في مصنف Excel باستخدام Aspose.Cells لـ C++.

  • قم بإنشاء مصنف Excel جديد.
  • قم بالوصول إلى ورقة العمل المطلوبة في كائن IWorksheet.
  • أضف مخططًا جديدًا إلى ورقة العمل باستخدام طريقة IWorksheet-> GetICharts() -> Add() عن طريق تمرير نوع المخطط.
  • قم بالوصول إلى المخطط المضاف حديثًا إلى كائن IChart.
  • اضبط مصدر البيانات للرسم البياني باستخدام طريقة IChart-> GetNISeries() -> Add().
  • احفظ المصنف كملف .xlsx.

يوضح نموذج التعليمات البرمجية التالي كيفية إنشاء مخطط في ملف Excel XLSX باستخدام C++.

// مسار ملف اكسل الناتج
StringPtr outputChartTypePyramid = resultPath->StringAppend(new String("Exce_Pyramid_Chart.xlsx"));

// قم بإنشاء مصنف جديد
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// احصل على ورقة العمل الأولى التي تم إنشاؤها افتراضيًا
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// إضافة قيم العينة إلى الخلايا
worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue(50);
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(100);
worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(150);
worksheet->GetICells()->GetObjectByIndex(new String("B1"))->PutValue(4);
worksheet->GetICells()->GetObjectByIndex(new String("B2"))->PutValue(20);
worksheet->GetICells()->GetObjectByIndex(new String("B3"))->PutValue(50);

// إضافة مخطط إلى ورقة العمل
int chartIndex = worksheet->GetICharts()->Add(Aspose::Cells::Charts::ChartType::ChartType_Pyramid, 5, 0, 20, 8);

// الوصول إلى مثيل المخطط المضاف حديثًا
intrusive_ptr<Aspose::Cells::Charts::IChart> chart = worksheet->GetICharts()->GetObjectByIndex(chartIndex);

// إضافة SeriesCollection (مصدر بيانات المخطط) إلى المخطط الذي يتراوح من خلية "A1" إلى "B3"
chart->GetNISeries()->Add(new String("A1:B3"), true);

// حفظ ملف Excel
workbook->Save(outputChartTypePyramid);

مصنف Excel مع الرسم البياني

إنشاء مخطط في Excel في C++

استنتاج

في هذه المقالة ، تناولنا كيفية إنشاء جداول بيانات MS Excel من البداية باستخدام C++. تحتوي المقالة أيضًا على إرشادات خطوة بخطوة ونماذج تعليمات برمجية حول كيفية إنشاء الجداول والمخططات وحساب الصيغ في أوراق عمل Excel. يمكنك معرفة المزيد حول الميزات المتقدمة الأخرى المتعلقة بأتمتة Excel من التوثيق من Aspose.Cells لـ C++.

مقالات لها صلة