טבלאות Pivot מסדרות מחדש את הנתונים כדי לייצג אותם בצורה משמעותית. הם מספקים אפשרויות מיון שונות ומספקים סכומים, ממוצעים או נתונים סטטיסטיים אחרים על ידי קיבוץ נתונים יחד. זהו כלי חיוני לניתוח נתונים ומהווה חלק בסיסי של MS Excel. אתה עלול למצוא את עצמך בתרחישים שבהם עליך ליצור ולתפעל טבלאות ציר באופן תוכניתי. לשם כך, מאמר זה ילמד אותך כיצד לעבוד עם טבלאות ציר בקבצי Excel באמצעות C++.
- C++ API לעבודה עם טבלאות Pivot בקבצי Excel
- צור טבלת Pivot בקובץ Excel באמצעות C++
- מיין טבלת Pivot בקובץ Excel באמצעות C++
- הסתר שורות בטבלת Pivot באמצעות C++
- מניפולציה של נתוני טבלת Pivot באמצעות C++
C++ API לעבודה עם טבלאות Pivot בקבצי Excel
Aspose.Cells for C++ היא ספריית C++ מקורית המאפשרת לך ליצור, לקרוא ולעדכן קבצי Excel מבלי לדרוש התקנה של Microsoft Excel. ה-API תומך גם בעבודה עם טבלאות ציר בקבצי Excel. אתה יכול להתקין את ה-API דרך NuGet או להוריד אותו ישירות מהקטע הורדות.
PM> Install-Package Aspose.Cells.Cpp
צור טבלת Pivot בקובץ Excel באמצעות C++
בדוגמה הבאה, ניצור קובץ אקסל חדש, נכניס לתוכו נתונים לדוגמה וניצור טבלת ציר. הקובץ שנוצר בדוגמה זו ישמש כקובץ המקור עבור דוגמאות אחרות. להלן השלבים ליצירת טבלת ציר בקובץ Excel.
- ראשית, צור מופע של המחלקה IWorkbook כדי לייצג את קובץ ה-Excel החדש.
- גש לגליון העבודה שבו ברצונך להוסיף את טבלת הציר באמצעות שיטת IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- הוסף נתונים לדוגמה עבור טבלת הציר.
- הוסף טבלת ציר באמצעות IWorksheet->GetIPivotTables()->Add(intrusiveptrAspose::Cells::Systems::String sourceData, intrusiveptrAspose::Cells::Systems::String destCellName, intrusiveptrAspose::Cells::Systems::String tableName) שיטה.
- כדי לגשת לטבלת הציר, השתמש בשיטת IWorksheet->GetIPivotTables()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index).
- בצע מניפולציות בשדות וקבע את הסגנון של טבלת הציר.
- לבסוף, שמור את קובץ ה-Excel באמצעות IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String fileName) שיטה.
הקוד לדוגמה הבא מראה כיצד ליצור טבלת ציר בקובץ 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 בקובץ Excel באמצעות C++
בדוגמה הבאה, נמיין את העמודה הראשונה של טבלת הציר בסדר יורד. להלן השלבים למיון נתונים בטבלת ציר.
- ראשית, טען את קובץ האקסל לדוגמה באמצעות המחלקה IWorkbook.
- אחזר את גליון העבודה המכיל את טבלת הציר באמצעות שיטת IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- גש לטבלת הציר באמצעות השיטה IWorksheet->GetIPivotTables()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index).
- קבל שדה שורה ומיון את טבלת הציר באמצעות השיטות IPivotField->SetAutoSort(bool value) ו-IPivotField->SetAscendSort(bool value).
- רענן את התוכן של טבלת הציר וחשב את הנתונים באמצעות שיטות IPivotTable->RefreshData() ו-IPivotTable->CalculateData() בהתאמה.
- לבסוף, שמור את קובץ ה-Excel באמצעות IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String fileName) שיטה.
הקוד לדוגמה הבא מדגים כיצד למיין טבלת ציר בקובץ 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 באמצעות C++
עם Aspose.Cells for C++ API, אתה יכול גם להסתיר את השורות בטבלת ציר. בדוגמה הבאה, נסתיר את השורה עם תווית השורה “כתום”. להלן השלבים להסתרת שורות בטבלת ציר.
- ראשית, טען את קובץ האקסל לדוגמה באמצעות המחלקה 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);
מניפולציה של נתוני טבלת Pivot באמצעות C++
אתה יכול גם לתפעל את הנתונים של טבלת ציר קיימת באמצעות Aspose.Cells עבור C++ API. בדוגמה הבאה, נחליף את הטקסט “תפוח” בתא “A2” ב"כתום" ונשקף את השינוי בטבלת הציר. להלן השלבים לעיבוד נתוני טבלת ציר.
- ראשית, טען את קובץ האקסל לדוגמה באמצעות המחלקה 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);
קבל רישיון חינם
על מנת לנסות את ה-API ללא מגבלות הערכה, אתה יכול לבקש רישיון זמני ללא תשלום.
סיכום
במאמר זה, למדת כיצד לעבוד עם טבלאות ציר בקבצי Excel באמצעות C++. באופן ספציפי, למדת כיצד ליצור טבלת ציר ולמיין, להסתיר ולעדכן את הנתונים בטבלת ציר באמצעות C++. Aspose.Cells עבור C++ הוא ממשק API עצום המספק חבורה של תכונות נוספות לעבודה עם קבצי Excel. אתה יכול לחקור את ה-API בפירוט על ידי ביקור בתיעוד הרשמי. בכל שאלה, אנא אל תהסס לפנות אלינו בפורום התמיכה החינמי שלנו.