ตาราง Pivot จัดเรียงข้อมูลใหม่เพื่อแสดงข้อมูลอย่างมีความหมาย โดยจะมีตัวเลือกการเรียงลำดับที่แตกต่างกันและให้ผลรวม ค่าเฉลี่ย หรือสถิติอื่นๆ โดยการจัดกลุ่มข้อมูลเข้าด้วยกัน เป็นเครื่องมือที่จำเป็นสำหรับการวิเคราะห์ข้อมูลและเป็นส่วนพื้นฐานของ MS Excel คุณอาจพบว่าตัวเองอยู่ในสถานการณ์ที่คุณต้องสร้างและจัดการตารางเดือยโดยทางโปรแกรม ด้วยเหตุนี้ บทความนี้จะสอนวิธีทำงานกับ pivot table ในไฟล์ Excel โดยใช้ C++
- C++ API สำหรับการทำงานกับ Pivot Table ในไฟล์ Excel
- สร้าง Pivot Table ในไฟล์ Excel โดยใช้ C++
- จัดเรียง Pivot Table ในไฟล์ Excel โดยใช้ C++
- ซ่อนแถวใน Pivot Table โดยใช้ C++
- จัดการข้อมูล Pivot Table โดยใช้ C++
C++ API สำหรับการทำงานกับ Pivot Table ในไฟล์ Excel
Aspose.Cells for C++ เป็นไลบรารี C++ ดั้งเดิมที่ให้คุณสร้าง อ่าน และอัปเดตไฟล์ Excel โดยไม่ต้องติดตั้ง Microsoft Excel API ยังรองรับการทำงานกับ pivot table ในไฟล์ Excel คุณสามารถติดตั้ง API ผ่าน NuGet หรือดาวน์โหลดโดยตรงจากส่วน ดาวน์โหลด
PM> Install-Package Aspose.Cells.Cpp
สร้าง Pivot Table ในไฟล์ Excel โดยใช้ C++
ในตัวอย่างต่อไปนี้ เราจะสร้างไฟล์ Excel ใหม่ แทรกข้อมูลตัวอย่างลงในไฟล์ และสร้างตาราง Pivot ไฟล์ที่สร้างขึ้นในตัวอย่างนี้จะถูกใช้เป็นไฟล์ต้นฉบับสำหรับตัวอย่างอื่นๆ ต่อไปนี้เป็นขั้นตอนในการสร้าง pivot table ในไฟล์ Excel
- ขั้นแรก สร้างอินสแตนซ์ของคลาส IWorkbook เพื่อแสดงไฟล์ Excel ใหม่
- เข้าถึงแผ่นงานที่คุณต้องการแทรกตารางสาระสำคัญโดยใช้เมธอด IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32)
- เพิ่มข้อมูลตัวอย่างสำหรับตารางเดือย
- เพิ่มตารางสาระสำคัญโดยใช้ IWorksheet->GetIPivotTables()->Add(intrusiveptrAspose::Cells::Systems::String แหล่งข้อมูล, บุกรุกAspose::Cells::Systems::String destCellName, บุกรุกAspose::Cells::Systems::String ชื่อตาราง) เมธอด
- ในการเข้าถึงตารางสาระสำคัญ ให้ใช้เมธอด IWorksheet->GetIPivotTables()->GetObjectByIndex(Aspose::Cells::Systems::Int32)
- จัดการฟิลด์และตั้งค่าสไตล์ของตารางเดือย
- สุดท้าย ให้บันทึกไฟล์ Excel โดยใช้ IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String ชื่อไฟล์) วิธีการ
โค้ดตัวอย่างต่อไปนี้แสดงวิธีสร้าง pivot table ในไฟล์ 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);
// จัดการแถว คอลัมน์ และฟิลด์ข้อมูลของ Pivot Table
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);
// บันทึกไฟล์ excel เอาต์พุต
workbook->Save(outDir->StringAppend(new String("outputCreatePivotTable.xlsx")));
จัดเรียง Pivot Table ในไฟล์ Excel โดยใช้ C++
ในตัวอย่างต่อไปนี้ เราจะจัดเรียงคอลัมน์แรกของตาราง Pivot โดยเรียงลำดับจากมากไปน้อย ต่อไปนี้เป็นขั้นตอนในการจัดเรียงข้อมูลในตาราง Pivot
- ขั้นแรก ให้โหลดไฟล์ Excel ตัวอย่างโดยใช้คลาส IWorkbook
- ดึงแผ่นงานที่มีตารางเดือยโดยใช้เมธอด
- เข้าถึงตารางสาระสำคัญโดยใช้เมธอด IWorksheet->GetIPivotTables()->GetObjectByIndex(Aspose::Cells::Systems::Int32)
- รับฟิลด์แถวและจัดเรียงตารางเดือยโดยใช้เมธอด IPivotField->SetAutoSort(ค่าบูล) และ IPivotField->SetAscendSort(ค่าบูล)
- รีเฟรชเนื้อหาของตาราง Pivot และคำนวณข้อมูลโดยใช้เมธอด IPivotTable->RefreshData() และ IPivotTable->CalculateData() ตามลำดับ
- สุดท้าย ให้บันทึกไฟล์ Excel โดยใช้ IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String ชื่อไฟล์) วิธีการ
โค้ดตัวอย่างต่อไปนี้สาธิตวิธีการจัดเรียงตารางเดือยในไฟล์ Excel โดยใช้ C++
// เส้นทางไดเร็กทอรีต้นทาง
StringPtr srcDir = new String("SourceDirectory\\");
// เส้นทางไดเร็กทอรีเอาต์พุต
StringPtr outDir = new String("OutputDirectory\\");
// เส้นทางของไฟล์ excel อินพุต
StringPtr samplePivotTable = srcDir->StringAppend(new String("SamplePivotTable.xlsx"));
// เส้นทางของไฟล์ excel เอาต์พุต
StringPtr outputSortedPivotTable = outDir->StringAppend(new String("outputSortedPivotTable.xlsx"));
// โหลดไฟล์ excel ตัวอย่าง
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();
// บันทึกไฟล์ excel เอาต์พุต
workbook->Save(outputSortedPivotTable);
ซ่อนแถวใน Pivot Table โดยใช้ C++
ด้วย Aspose.Cells for C++ API คุณยังสามารถซ่อนแถวในตาราง Pivot ได้อีกด้วย ในตัวอย่างต่อไปนี้ เราจะซ่อนแถวที่มีป้ายกำกับแถว “สีส้ม” ต่อไปนี้เป็นขั้นตอนในการซ่อนแถวในตาราง Pivot
- ขั้นแรก ให้โหลดไฟล์ Excel ตัวอย่างโดยใช้คลาส IWorkbook
- ดึงแผ่นงานที่มีตารางเดือยโดยใช้เมธอด
- เข้าถึงตารางสาระสำคัญโดยใช้เมธอด IWorksheet->GetIPivotTables()->GetObjectByIndex(Aspose::Cells::Systems::Int32)
- รับช่วงเนื้อหาของข้อมูลตาราง Pivot โดยใช้วิธี IPivotTable->GetIDataBodyRange()
- วนซ้ำตามแถวของตาราง Pivot และซ่อนแถวที่ตรงกับเกณฑ์ของคุณ
- รีเฟรชเนื้อหาของตาราง Pivot และคำนวณข้อมูลโดยใช้เมธอด IPivotTable->RefreshData() และ IPivotTable->CalculateData() ตามลำดับ
- สุดท้าย ให้บันทึกไฟล์ Excel โดยใช้ IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String ชื่อไฟล์) วิธีการ
โค้ดตัวอย่างต่อไปนี้แสดงวิธีซ่อนแถวในตาราง Pivot โดยใช้ C++
// เส้นทางไดเร็กทอรีต้นทาง
StringPtr srcDir = new String("SourceDirectory\\");
// เส้นทางไดเร็กทอรีเอาต์พุต
StringPtr outDir = new String("OutputDirectory\\");
// เส้นทางของไฟล์ excel อินพุต
StringPtr samplePivotTable = srcDir->StringAppend(new String("SamplePivotTable.xlsx"));
// เส้นทางของไฟล์ excel เอาต์พุต
StringPtr outputHiddenRowPivotTable = outDir->StringAppend(new String("outputHiddenRowPivotTable.xlsx"));
// โหลดไฟล์ excel ตัวอย่าง
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();
// แถวเริ่มต้นของตาราง Pivot
int currentRow = 5;
// แถวสิ้นสุดของตาราง Pivot
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();
// บันทึกไฟล์ excel เอาต์พุต
workbook->Save(outputHiddenRowPivotTable);
จัดการข้อมูล Pivot Table โดยใช้ C++
คุณยังสามารถจัดการข้อมูลของตาราง Pivot ที่มีอยู่ได้โดยใช้ Aspose.Cells for C++ API ในตัวอย่างต่อไปนี้ เราจะแทนที่ข้อความ “Apple” ในเซลล์ “A2” ด้วย “Orange” และแสดงการเปลี่ยนแปลงในตาราง Pivot ต่อไปนี้เป็นขั้นตอนในการจัดการกับข้อมูลตารางเดือย
- ขั้นแรก ให้โหลดไฟล์ Excel ตัวอย่างโดยใช้คลาส IWorkbook
- ดึงเวิร์กชีตที่มีข้อมูลตารางเดือยโดยใช้เมธอด IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32)
- อัปเดตข้อมูลของตารางเดือยตามความต้องการของคุณ
- ในการเข้าถึงตารางสาระสำคัญ ให้ใช้เมธอด IWorksheet->GetIPivotTables()->GetObjectByIndex(Aspose::Cells::Systems::Int32)
- รีเฟรชเนื้อหาของตาราง Pivot และคำนวณข้อมูลโดยใช้เมธอด IPivotTable->RefreshData() และ IPivotTable->CalculateData() ตามลำดับ
- สุดท้าย ให้บันทึกไฟล์ Excel โดยใช้ IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String ชื่อไฟล์) วิธี
โค้ดตัวอย่างต่อไปนี้แสดงวิธีการอัพเดตข้อมูลของ pivot table โดยใช้ C++
// เส้นทางไดเร็กทอรีต้นทาง
StringPtr srcDir = new String("SourceDirectory\\");
// เส้นทางไดเร็กทอรีเอาต์พุต
StringPtr outDir = new String("OutputDirectory\\");
// เส้นทางของไฟล์ excel อินพุต
StringPtr samplePivotTable = srcDir->StringAppend(new String("SamplePivotTable.xlsx"));
// เส้นทางของไฟล์ excel เอาต์พุต
StringPtr outputManipulatePivotTable = outDir->StringAppend(new String("outputManipulatePivotTable.xlsx"));
// โหลดไฟล์ excel ตัวอย่าง
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();
// บันทึกไฟล์ excel เอาต์พุต
workbook->Save(outputManipulatePivotTable);
รับใบอนุญาตฟรี
หากต้องการลองใช้ API โดยไม่มีข้อจำกัดในการประเมิน คุณสามารถขอ ใบอนุญาตชั่วคราวฟรี
บทสรุป
ในบทความนี้ คุณได้เรียนรู้วิธีการทำงานกับ pivot table ในไฟล์ Excel โดยใช้ C++ โดยเฉพาะอย่างยิ่ง คุณได้เรียนรู้วิธีสร้าง pivot table และจัดเรียง ซ่อน และอัปเดตข้อมูลใน pivot table โดยใช้ C++ Aspose.Cells for C++ เป็น API ขนาดใหญ่ที่มีคุณลักษณะเพิ่มเติมมากมายสำหรับการทำงานกับไฟล์ Excel คุณสามารถสำรวจ API โดยละเอียดได้โดยไปที่ เอกสารอย่างเป็นทางการ ในกรณีที่มีคำถามใดๆ โปรดติดต่อเราได้ที่ ฟอรัมสนับสนุนฟรี