טבלאות Pivot מסדרות מחדש את הנתונים כדי לייצג אותם בצורה משמעותית. הם מספקים אפשרויות מיון שונות ומספקים סכומים, ממוצעים או נתונים סטטיסטיים אחרים על ידי קיבוץ נתונים יחד. זהו כלי חיוני לניתוח נתונים ומהווה חלק בסיסי של MS Excel. אתה עלול למצוא את עצמך בתרחישים שבהם עליך ליצור ולתפעל טבלאות ציר באופן תוכניתי. לשם כך, מאמר זה ילמד אותך כיצד לעבוד עם טבלאות ציר בקבצי Excel באמצעות 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.

הקוד לדוגמה הבא מראה כיצד ליצור טבלת ציר בקובץ 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++

בדוגמה הבאה, נמיין את העמודה הראשונה של טבלת הציר בסדר יורד. להלן השלבים למיון נתונים בטבלת ציר.

הקוד לדוגמה הבא מדגים כיצד למיין טבלת ציר בקובץ 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, אתה יכול גם להסתיר את השורות בטבלת ציר. בדוגמה הבאה, נסתיר את השורה עם תווית השורה “כתום”. להלן השלבים להסתרת שורות בטבלת ציר.

הקוד לדוגמה הבא מראה כיצד להסתיר שורות בטבלת ציר באמצעות 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” ב"כתום" ונשקף את השינוי בטבלת הציר. להלן השלבים לעיבוד נתוני טבלת ציר.

הקוד לדוגמה הבא מראה כיצד לעדכן את הנתונים של טבלת ציר באמצעות 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 בפירוט על ידי ביקור בתיעוד הרשמי. בכל שאלה, אנא אל תהסס לפנות אלינו בפורום התמיכה החינמי שלנו.

ראה גם