تعمل الجداول المحورية على إعادة ترتيب البيانات لتمثيلها بطريقة ذات معنى. أنها توفر خيارات فرز مختلفة وتوفر مجاميع أو متوسطات أو إحصائيات أخرى عن طريق تجميع البيانات معًا. إنها أداة أساسية لتحليل البيانات وهي جزء أساسي من MS Excel. قد تجد نفسك في سيناريوهات تحتاج فيها إلى إنشاء الجداول المحورية ومعالجتها برمجيًا. تحقيقًا لهذه الغاية ، ستعلمك هذه المقالة كيفية العمل مع الجداول المحورية في ملفات Excel باستخدام C ++.
- واجهة برمجة تطبيقات C ++ للعمل مع الجداول المحورية في ملفات Excel
- قم بإنشاء Pivot Table في ملف Excel باستخدام C ++
- فرز Pivot Table في ملف Excel باستخدام C ++
- إخفاء الصفوف في Pivot Table باستخدام C ++
- معالجة بيانات الجدول المحوري باستخدام 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.
- أولاً ، قم بإنشاء مثيل لفئة IWorkbook لتمثيل ملف Excel الجديد.
- قم بالوصول إلى ورقة العمل حيث تريد إدراج الجدول المحوري باستخدام طريقة IWorkbook-> GetIWorksheets() -> GetObjectByIndex (Aspose :: Cells :: Systems :: Int32 index).
- أضف بيانات نموذجية للجدول المحوري.
- أضف جدول محوري باستخدام [IWorksheet-> GetIPivotTables() -> Add (intrusiveptrAspose::Cells::Systems::String sourceData ، intrusiveptrAspose::Cells::Systems::String destCellName ، متطفلAspose::Cells::Systems::String tableName)] طريقة 6.
- للوصول إلى الجدول المحوري ، استخدم IWorksheet-> GetIPivotTables() -> GetObjectByIndex (Aspose :: Cells :: Systems :: Int32 index).
- عالج الحقول وعيّن نمط الجدول المحوري.
- أخيرًا ، احفظ ملف Excel باستخدام IWorkbook-> Save (intrusiveptrAspose::Cells::Systems::String اسم الملف) طريقة.
يوضح نموذج التعليمات البرمجية التالي كيفية إنشاء جدول محوري في ملف 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 باستخدام فئة IWorkbook.
- استرجع ورقة العمل التي تحتوي على الجدول المحوري باستخدام طريقة IWorkbook-> GetIWorksheets() -> GetObjectByIndex (Aspose :: Cells :: Systems :: Int32 index).
- قم بالوصول إلى الجدول المحوري باستخدام IWorksheet-> GetIPivotTables() -> GetObjectByIndex (Aspose :: Cells :: Systems :: Int32 index).
- احصل على حقل الصف وفرز الجدول المحوري باستخدام IPivotField-> SetAutoSort (قيمة منطقية) و IPivotField-> SetAscendSort (قيمة منطقية).
- قم بتحديث محتويات الجدول المحوري وحساب البيانات باستخدام الأسلوبين IPivotTable-> RefreshData() و IPivotTable-> CalculateData() على التوالي.
- أخيرًا ، احفظ ملف Excel باستخدام IWorkbook-> Save (intrusiveptrAspose::Cells::Systems::String اسم الملف) طريقة.
يوضح نموذج التعليمات البرمجية التالي كيفية فرز جدول محوري في ملف 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 ، يمكنك أيضًا إخفاء الصفوف في جدول محوري. في المثال التالي ، سنخفي الصف الذي يحمل تصنيف الصف “برتقالي”. فيما يلي خطوات إخفاء الصفوف في جدول محوري.
- أولاً ، قم بتحميل نموذج ملف Excel باستخدام فئة IWorkbook.
- استرجع ورقة العمل التي تحتوي على الجدول المحوري باستخدام طريقة IWorkbook-> GetIWorksheets() -> GetObjectByIndex (Aspose :: Cells :: Systems :: Int32 index).
- قم بالوصول إلى الجدول المحوري باستخدام IWorksheet-> GetIPivotTables() -> GetObjectByIndex (Aspose :: Cells :: Systems :: Int32 index).
- احصل على نطاق نص بيانات الجدول المحوري باستخدام طريقة IPivotTable-> GetIDataBodyRange().
- كرر خلال صفوف الجدول المحوري وإخفاء الصفوف التي تفي بالمعايير الخاصة بك.
- قم بتحديث محتويات الجدول المحوري وحساب البيانات باستخدام الأسلوبين IPivotTable-> RefreshData() و IPivotTable-> CalculateData() على التوالي.
- أخيرًا ، احفظ ملف Excel باستخدام IWorkbook-> Save (intrusiveptrAspose::Cells::Systems::String fileName) طريقة.
يوضح نموذج التعليمات البرمجية التالي كيفية إخفاء الصفوف في جدول محوري باستخدام 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” ونعكس التغيير في الجدول المحوري. فيما يلي خطوات معالجة بيانات الجدول المحوري.
- أولاً ، قم بتحميل نموذج ملف Excel باستخدام فئة IWorkbook.
- استرجع ورقة العمل التي تحتوي على بيانات الجدول المحوري باستخدام طريقة IWorkbook-> GetIWorksheets() -> GetObjectByIndex (Aspose :: Cells :: Systems :: Int32 index).
- قم بتحديث بيانات الجدول المحوري وفقًا لمتطلباتك.
- من أجل الوصول إلى الجدول المحوري ، استخدم طريقة IWorksheet-> GetIPivotTables() -> GetObjectByIndex (Aspose :: Cells :: Systems :: Int32 index).
- قم بتحديث محتويات الجدول المحوري وحساب البيانات باستخدام الأسلوبين IPivotTable-> RefreshData() و IPivotTable-> CalculateData() على التوالي.
- أخيرًا ، احفظ ملف Excel باستخدام IWorkbook-> Save (intrusiveptrAspose::Cells::Systems::String fileName) طريقة.
يوضح نموذج التعليمات البرمجية التالي كيفية تحديث بيانات الجدول المحوري باستخدام 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 بالتفصيل من خلال زيارة الوثائق الرسمية. في حالة وجود أي أسئلة ، لا تتردد في الاتصال بنا على منتدى الدعم المجاني.