ตาราง Pivot จัดเรียงข้อมูลใหม่เพื่อแสดงข้อมูลอย่างมีความหมาย โดยจะมีตัวเลือกการเรียงลำดับที่แตกต่างกันและให้ผลรวม ค่าเฉลี่ย หรือสถิติอื่นๆ โดยการจัดกลุ่มข้อมูลเข้าด้วยกัน เป็นเครื่องมือที่จำเป็นสำหรับการวิเคราะห์ข้อมูลและเป็นส่วนพื้นฐานของ MS Excel คุณอาจพบว่าตัวเองอยู่ในสถานการณ์ที่คุณต้องสร้างและจัดการตารางเดือยโดยทางโปรแกรม ด้วยเหตุนี้ บทความนี้จะสอนวิธีทำงานกับ pivot table ในไฟล์ Excel โดยใช้ 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

โค้ดตัวอย่างต่อไปนี้แสดงวิธีสร้าง 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 ที่สร้างโดยโค้ดตัวอย่าง

รูปภาพของตาราง Pivot ที่สร้างโดยโค้ดตัวอย่าง

จัดเรียง Pivot Table ในไฟล์ Excel โดยใช้ C++

ในตัวอย่างต่อไปนี้ เราจะจัดเรียงคอลัมน์แรกของตาราง Pivot โดยเรียงลำดับจากมากไปน้อย ต่อไปนี้เป็นขั้นตอนในการจัดเรียงข้อมูลในตาราง Pivot

โค้ดตัวอย่างต่อไปนี้สาธิตวิธีการจัดเรียงตารางเดือยในไฟล์ 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 ที่จัดเรียงซึ่งสร้างโดยโค้ดตัวอย่าง

รูปภาพของตาราง Pivot ที่จัดเรียงซึ่งสร้างโดยโค้ดตัวอย่าง

ซ่อนแถวใน Pivot Table โดยใช้ C++

ด้วย Aspose.Cells for C++ API คุณยังสามารถซ่อนแถวในตาราง Pivot ได้อีกด้วย ในตัวอย่างต่อไปนี้ เราจะซ่อนแถวที่มีป้ายกำกับแถว “สีส้ม” ต่อไปนี้เป็นขั้นตอนในการซ่อนแถวในตาราง Pivot

โค้ดตัวอย่างต่อไปนี้แสดงวิธีซ่อนแถวในตาราง 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 ต่อไปนี้เป็นขั้นตอนในการจัดการกับข้อมูลตารางเดือย

โค้ดตัวอย่างต่อไปนี้แสดงวิธีการอัพเดตข้อมูลของ 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);
Pivot Table แสดงข้อมูลที่อัพเดท

Pivot Table แสดงข้อมูลที่อัพเดท

รับใบอนุญาตฟรี

หากต้องการลองใช้ API โดยไม่มีข้อจำกัดในการประเมิน คุณสามารถขอ ใบอนุญาตชั่วคราวฟรี

บทสรุป

ในบทความนี้ คุณได้เรียนรู้วิธีการทำงานกับ pivot table ในไฟล์ Excel โดยใช้ C++ โดยเฉพาะอย่างยิ่ง คุณได้เรียนรู้วิธีสร้าง pivot table และจัดเรียง ซ่อน และอัปเดตข้อมูลใน pivot table โดยใช้ C++ Aspose.Cells for C++ เป็น API ขนาดใหญ่ที่มีคุณลักษณะเพิ่มเติมมากมายสำหรับการทำงานกับไฟล์ Excel คุณสามารถสำรวจ API โดยละเอียดได้โดยไปที่ เอกสารอย่างเป็นทางการ ในกรณีที่มีคำถามใดๆ โปรดติดต่อเราได้ที่ ฟอรัมสนับสนุนฟรี

ดูสิ่งนี้ด้วย