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

واجهة برمجة تطبيقات C ++ للعمل مع الجداول المحورية في ملفات Excel

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

PM> Install-Package Aspose.Cells.Cpp

قم بإنشاء Pivot Table في ملف Excel باستخدام C ++

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

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

// مسار الدليل المصدر.
StringPtr srcDir = new String("SourceDirectory\\");

// مسار دليل الإخراج.
StringPtr outDir = new String("OutputDirectory\\");

// قم بإنشاء مثيل لفئة IWorkbook
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// قم بالوصول إلى ورقة العمل الأولى
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// أضف بيانات المصدر للجدول المحوري
intrusive_ptr<String> str = new String("Fruit");
worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue(str);
str = new String("Quantity");
worksheet->GetICells()->GetObjectByIndex(new String("B1"))->PutValue(str);
str = new String("Price");
worksheet->GetICells()->GetObjectByIndex(new String("C1"))->PutValue(str);
str = new String("Apple");
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(str);
str = new String("Orange");
worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(str);
str = new String("Mango");
worksheet->GetICells()->GetObjectByIndex(new String("A4"))->PutValue(str);
worksheet->GetICells()->GetObjectByIndex(new String("B2"))->PutValue(3);
worksheet->GetICells()->GetObjectByIndex(new String("B3"))->PutValue(4);
worksheet->GetICells()->GetObjectByIndex(new String("B4"))->PutValue(4);
worksheet->GetICells()->GetObjectByIndex(new String("C2"))->PutValue(2);
worksheet->GetICells()->GetObjectByIndex(new String("C3"))->PutValue(1);
worksheet->GetICells()->GetObjectByIndex(new String("C4"))->PutValue(4);

// أضف الجدول المحوري
int idx = worksheet->GetIPivotTables()->Add(new String("A1:C4"), new String("E5"), new String("MyPivotTable"));

// تم إنشاء الوصول إلى جدول محوري
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(idx);

// معالجة صفوف الجدول المحوري والأعمدة وحقول البيانات
pivotTable->AddFieldToArea(PivotFieldType_Row, pivotTable->GetIBaseFields()->GetObjectByIndex(0));
pivotTable->AddFieldToArea(PivotFieldType_Data, pivotTable->GetIBaseFields()->GetObjectByIndex(1));
pivotTable->AddFieldToArea(PivotFieldType_Data, pivotTable->GetIBaseFields()->GetObjectByIndex(2));
pivotTable->AddFieldToArea(PivotFieldType_Column, pivotTable->GetIDataField());

// اضبط نمط الجدول المحوري
pivotTable->SetPivotTableStyleType(PivotTableStyleType_PivotTableStyleMedium9);

// احفظ ملف الإخراج إكسل
workbook->Save(outDir->StringAppend(new String("outputCreatePivotTable.xlsx")));
صورة الجدول المحوري الذي تم إنشاؤه بواسطة نموذج التعليمات البرمجية

صورة الجدول المحوري الذي تم إنشاؤه بواسطة نموذج التعليمات البرمجية

فرز Pivot Table في ملف Excel باستخدام C ++

في المثال التالي ، سنقوم بفرز العمود الأول من الجدول المحوري بترتيب تنازلي. فيما يلي خطوات فرز البيانات في جدول محوري.

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

// مسار الدليل المصدر.
StringPtr srcDir = new String("SourceDirectory\\");

// مسار دليل الإخراج.
StringPtr outDir = new String("OutputDirectory\\");

// مسار ملف إكسل الإدخال
StringPtr samplePivotTable = srcDir->StringAppend(new String("SamplePivotTable.xlsx"));

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

// تحميل ملف اكسل عينة
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(samplePivotTable);

// قم بالوصول إلى ورقة العمل الأولى
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// الوصول إلى الجدول المحوري
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(0);

// تعيين الجدول المحوري الفرز
pivotTable->AddFieldToArea(PivotFieldType_Row, 0);
intrusive_ptr<IPivotField> pivotField = pivotTable->GetIRowFields()->GetObjectByIndex(0);
pivotField->SetAutoSort(true);
pivotField->SetAscendSort(false);

// تحديث وحساب البيانات في الجدول المحوري.
pivotTable->RefreshData();
pivotTable->CalculateData();

// احفظ ملف الإخراج إكسل
workbook->Save(outputSortedPivotTable);
صورة الجدول المحوري الذي تم فرزه والذي تم إنشاؤه بواسطة نموذج التعليمات البرمجية

صورة الجدول المحوري الذي تم فرزه والذي تم إنشاؤه بواسطة نموذج التعليمات البرمجية

إخفاء الصفوف في Pivot Table باستخدام C ++

باستخدام Aspose.Cells for C ++ API ، يمكنك أيضًا إخفاء الصفوف في جدول محوري. في المثال التالي ، سنخفي الصف الذي يحمل تصنيف الصف “برتقالي”. فيما يلي خطوات إخفاء الصفوف في جدول محوري.

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

// مسار الدليل المصدر.
StringPtr srcDir = new String("SourceDirectory\\");

// مسار دليل الإخراج.
StringPtr outDir = new String("OutputDirectory\\");

// مسار ملف إكسل الإدخال
StringPtr samplePivotTable = srcDir->StringAppend(new String("SamplePivotTable.xlsx"));

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

// تحميل ملف اكسل عينة
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(samplePivotTable);

// قم بالوصول إلى ورقة العمل الأولى
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// الوصول إلى الجدول المحوري
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(0);

// احصل على نطاق جسم الجدول المحوري
intrusive_ptr<ICellArea> dataBodyRange = pivotTable->GetIDataBodyRange();

// صف بداية الجدول المحوري
int currentRow = 5;

// صف نهاية الجدول المحوري
int rowsUsed = dataBodyRange->GetendRow();

// كرر خلال الصفوف ، وقارن بين قيمة الخلية وأخف الصفوف.
for (int i = currentRow; i < rowsUsed; i++) {
	intrusive_ptr<ICell> cell = worksheet->GetICells()->GetICell(i, 4);
	if (strcmp(cell->GetStringValue()->charValue(), "Orange") == 0) {
		worksheet->GetICells()->HideRow(i);
	}
}

// تحديث وحساب البيانات في الجدول المحوري.
pivotTable->RefreshData();
pivotTable->CalculateData();

// احفظ ملف الإخراج إكسل
workbook->Save(outputHiddenRowPivotTable);
صورة الجدول المحوري مع صف مخفي

صورة الجدول المحوري مع صف مخفي

معالجة بيانات الجدول المحوري باستخدام C ++

يمكنك أيضًا معالجة بيانات جدول محوري موجود باستخدام Aspose.Cells for C ++ API. في المثال التالي ، سنستبدل النص “Apple” في الخلية “A2” بـ “Orange” ونعكس التغيير في الجدول المحوري. فيما يلي خطوات معالجة بيانات الجدول المحوري.

يوضح نموذج التعليمات البرمجية التالي كيفية تحديث بيانات الجدول المحوري باستخدام C ++.

// مسار الدليل المصدر.
StringPtr srcDir = new String("SourceDirectory\\");

// مسار دليل الإخراج.
StringPtr outDir = new String("OutputDirectory\\");

// مسار ملف إكسل الإدخال
StringPtr samplePivotTable = srcDir->StringAppend(new String("SamplePivotTable.xlsx"));

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

// تحميل ملف اكسل عينة
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(samplePivotTable);

// قم بالوصول إلى ورقة العمل الأولى
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// قم بتغيير قيمة الخلية A2 الموجودة داخل البيانات المصدر للجدول المحوري
intrusive_ptr<String> str = new String("Orange");
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(str);

// الوصول إلى الجدول المحوري وتحديثه وحسابه
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(0);
pivotTable->RefreshData();
pivotTable->CalculateData();

// احفظ ملف الإخراج إكسل
workbook->Save(outputManipulatePivotTable);
جدول محوري يعرض البيانات المحدثة

جدول محوري يعرض البيانات المحدثة

احصل على رخصة مجانية

لتجربة واجهة برمجة التطبيقات بدون قيود تقييمية ، يمكنك طلب ترخيص مؤقت مجاني.

استنتاج

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

أنظر أيضا