Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
PivotTable.AddFieldToArea(PivotFieldType fieldType, U16String fieldName) メソッドは、ソースデータからベースフィールドを 4 つのピボット領域のいずれかに移動します。fieldType 引数は、次のいずれかの PivotFieldType 値を受け取ります。
Row — 左側に垂直に配置されるフィールドColumn — 上部に水平に配置されるフィールドData — 値が集計されるフィールドPage — レポートフィルターとして使用されるフィールド
フィールドのネスト順序は重要です。最初に Category を行領域に追加し、次に Item を追加すると、外側のグループ化が Category、内側のグループ化が Item であるピボットが生成されます。順序を逆順にすると、階層も逆になります。PivotField.SetSubtotals(PivotFieldSubtotalType subtotalType, bool shown) メソッドは、ピボットフィールドに対して表示される小計行を制御します。各呼び出しは、単一の小計タイプを個別に切り替えます。shown = true を渡すと小計が表示され、shown = false を渡すと非表示になります。各呼び出しは 1 つのタイプにのみ影響を与えるため、異なる subtotalType 値を使用してメソッドを複数回呼び出すことで、小計のカスタムサブセットを構築できます。
PivotFieldSubtotalType 列挙型は、利用可能な小計の種類を定義します。
Automatic — Aspose.Cells が既定の選択(通常は数値フィールドに対する Sum)を選択しますNone — すべての小計行を抑制しますSumCountAverageMaxMinProductStdDevStdDevpVarVarpSetSubtotals 呼び出しはそのような場合には目に見える効果をもたらしません。したがって、この記事では、各 Category グループ間の小計の境界が見えるように、すべての例で 2 つの行フィールド(外側 Category、内側 Item)を配置しています。
SetSubtotals をまったく呼び出さない場合、Aspose.Cells は数値フィールドに対して Automatic 選択を適用します。次の例は、外側の Category 行フィールドに対して SetSubtotals(PivotFieldSubtotalType.Automatic, true) を呼び出すことで、この動作を明示的に確認しています。
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
int main() {
Aspose::Cells::Startup();
Workbook workbook;
Worksheet worksheet = workbook.GetWorksheets().Get(0);
worksheet.SetName(u"Data");
worksheet.GetCells().Get(0, 0).PutValue(u"Category");
worksheet.GetCells().Get(0, 1).PutValue(u"Item");
worksheet.GetCells().Get(0, 2).PutValue(u"Year");
worksheet.GetCells().Get(0, 3).PutValue(u"Amount");
worksheet.GetCells().Get(1, 0).PutValue(u"Fruit");
worksheet.GetCells().Get(1, 1).PutValue(u"Apple");
worksheet.GetCells().Get(1, 2).PutValue(2020);
worksheet.GetCells().Get(1, 3).PutValue(100);
worksheet.GetCells().Get(2, 0).PutValue(u"Fruit");
worksheet.GetCells().Get(2, 1).PutValue(u"Apple");
worksheet.GetCells().Get(2, 2).PutValue(2021);
worksheet.GetCells().Get(2, 3).PutValue(150);
worksheet.GetCells().Get(3, 0).PutValue(u"Fruit");
worksheet.GetCells().Get(3, 1).PutValue(u"Banana");
worksheet.GetCells().Get(3, 2).PutValue(2020);
worksheet.GetCells().Get(3, 3).PutValue(80);
worksheet.GetCells().Get(4, 0).PutValue(u"Fruit");
worksheet.GetCells().Get(4, 1).PutValue(u"Banana");
worksheet.GetCells().Get(4, 2).PutValue(2021);
worksheet.GetCells().Get(4, 3).PutValue(90);
worksheet.GetCells().Get(5, 0).PutValue(u"Vegetable");
worksheet.GetCells().Get(5, 1).PutValue(u"Carrot");
worksheet.GetCells().Get(5, 2).PutValue(2020);
worksheet.GetCells().Get(5, 3).PutValue(50);
worksheet.GetCells().Get(6, 0).PutValue(u"Vegetable");
worksheet.GetCells().Get(6, 1).PutValue(u"Carrot");
worksheet.GetCells().Get(6, 2).PutValue(2021);
worksheet.GetCells().Get(6, 3).PutValue(60);
worksheet.GetCells().Get(7, 0).PutValue(u"Vegetable");
worksheet.GetCells().Get(7, 1).PutValue(u"Daikon");
worksheet.GetCells().Get(7, 2).PutValue(2020);
worksheet.GetCells().Get(7, 3).PutValue(40);
worksheet.GetCells().Get(8, 0).PutValue(u"Vegetable");
worksheet.GetCells().Get(8, 1).PutValue(u"Daikon");
worksheet.GetCells().Get(8, 2).PutValue(2021);
worksheet.GetCells().Get(8, 3).PutValue(45);
int pivotIndex = worksheet.GetPivotTables().Add(u"A1:D9", u"F3", u"PivotTable1");
PivotTable pivotTable = worksheet.GetPivotTables().Get(pivotIndex);
pivotTable.AddFieldToArea(PivotFieldType::Row, u"Category");
pivotTable.AddFieldToArea(PivotFieldType::Row, u"Item");
pivotTable.AddFieldToArea(PivotFieldType::Column, u"Year");
pivotTable.AddFieldToArea(PivotFieldType::Data, u"Amount");
PivotField categoryField = pivotTable.GetRowFields().Get(0);
categoryField.SetSubtotals(PivotFieldSubtotalType::Automatic, true);
pivotTable.CalculateData();
workbook.Save(u"output_automatic.xlsx");
Aspose::Cells::Cleanup();
return 0;
}
SetSubtotals(PivotFieldSubtotalType.None, true) を呼び出すと、ピボットからすべての小計行が削除され、フィールド行と最下部の総計のみが残ります。これは、集計行のない生のグループ化データが必要な場合に便利です。
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
int main() {
Aspose::Cells::Startup();
Workbook wb;
Worksheet sheet = wb.GetWorksheets().Get(0);
sheet.SetName(u"Data");
U16String headers[] = { u"Category", u"Item", u"Year", u"Amount" };
for (int j = 0; j < 4; j++) {
sheet.GetCells().Get(0, j).PutValue(headers[j]);
}
U16String categories[] = { u"Fruit", u"Fruit", u"Fruit", u"Fruit",
u"Vegetable", u"Vegetable", u"Vegetable", u"Vegetable" };
U16String items[] = { u"Apple", u"Apple", u"Banana", u"Banana",
u"Carrot", u"Carrot", u"Daikon", u"Daikon" };
int years[] = { 2020, 2021, 2020, 2021, 2020, 2021, 2020, 2021 };
int amounts[] = { 100, 150, 80, 90, 50, 60, 40, 45 };
for (int i = 0; i < 8; i++) {
sheet.GetCells().Get(i + 1, 0).PutValue(categories[i]);
sheet.GetCells().Get(i + 1, 1).PutValue(items[i]);
sheet.GetCells().Get(i + 1, 2).PutValue(years[i]);
sheet.GetCells().Get(i + 1, 3).PutValue(amounts[i]);
}
int pivotIndex = sheet.GetPivotTables().Add(u"A1:D9", u"F3", u"PivotTable1");
PivotTable pivotTable = sheet.GetPivotTables().Get(pivotIndex);
pivotTable.AddFieldToArea(PivotFieldType::Row, u"Category");
pivotTable.AddFieldToArea(PivotFieldType::Row, u"Item");
pivotTable.AddFieldToArea(PivotFieldType::Column, u"Year");
pivotTable.AddFieldToArea(PivotFieldType::Data, u"Amount");
PivotField categoryField = pivotTable.GetRowFields().Get(0);
categoryField.SetSubtotals(PivotFieldSubtotalType::None, true);
pivotTable.CalculateData();
wb.Save(u"output_none.xlsx");
Aspose::Cells::Cleanup();
return 0;
}
単一の小計種類に限定されません。各 SetSubtotals 呼び出しは 1 つの種類に対して独立して動作するため、Sum で 1 回、Average で 1 回と 2 回メソッドを呼び出すと、各 Category グループに対して 2 つの小計行のカスタムサブセットが生成されます。
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
using namespace Aspose::Cells::Pivot;
int main() {
Aspose::Cells::Startup();
Workbook workbook;
Worksheet worksheet = workbook.GetWorksheets().Get(0);
worksheet.SetName(u"Data");
worksheet.GetCells().Get(u"A1").PutValue(u"Category");
worksheet.GetCells().Get(u"B1").PutValue(u"Item");
worksheet.GetCells().Get(u"C1").PutValue(u"Year");
worksheet.GetCells().Get(u"D1").PutValue(u"Amount");
worksheet.GetCells().Get(1, 0).PutValue(u"Fruit");
worksheet.GetCells().Get(1, 1).PutValue(u"Apple");
worksheet.GetCells().Get(1, 2).PutValue(2020);
worksheet.GetCells().Get(1, 3).PutValue(100);
worksheet.GetCells().Get(2, 0).PutValue(u"Fruit");
worksheet.GetCells().Get(2, 1).PutValue(u"Apple");
worksheet.GetCells().Get(2, 2).PutValue(2021);
worksheet.GetCells().Get(2, 3).PutValue(150);
worksheet.GetCells().Get(3, 0).PutValue(u"Fruit");
worksheet.GetCells().Get(3, 1).PutValue(u"Banana");
worksheet.GetCells().Get(3, 2).PutValue(2020);
worksheet.GetCells().Get(3, 3).PutValue(80);
worksheet.GetCells().Get(4, 0).PutValue(u"Fruit");
worksheet.GetCells().Get(4, 1).PutValue(u"Banana");
worksheet.GetCells().Get(4, 2).PutValue(2021);
worksheet.GetCells().Get(4, 3).PutValue(90);
worksheet.GetCells().Get(5, 0).PutValue(u"Vegetable");
worksheet.GetCells().Get(5, 1).PutValue(u"Carrot");
worksheet.GetCells().Get(5, 2).PutValue(2020);
worksheet.GetCells().Get(5, 3).PutValue(50);
worksheet.GetCells().Get(6, 0).PutValue(u"Vegetable");
worksheet.GetCells().Get(6, 1).PutValue(u"Carrot");
worksheet.GetCells().Get(6, 2).PutValue(2021);
worksheet.GetCells().Get(6, 3).PutValue(60);
worksheet.GetCells().Get(7, 0).PutValue(u"Vegetable");
worksheet.GetCells().Get(7, 1).PutValue(u"Daikon");
worksheet.GetCells().Get(7, 2).PutValue(2020);
worksheet.GetCells().Get(7, 3).PutValue(40);
worksheet.GetCells().Get(8, 0).PutValue(u"Vegetable");
worksheet.GetCells().Get(8, 1).PutValue(u"Daikon");
worksheet.GetCells().Get(8, 2).PutValue(2021);
worksheet.GetCells().Get(8, 3).PutValue(45);
PivotTableCollection pivotTables = worksheet.GetPivotTables();
int pivotIndex = pivotTables.Add(u"A1:D9", u"F3", u"PivotTable1");
PivotTable pivotTable = pivotTables.Get(pivotIndex);
pivotTable.AddFieldToArea(PivotFieldType::Row, u"Category");
pivotTable.AddFieldToArea(PivotFieldType::Row, u"Item");
pivotTable.AddFieldToArea(PivotFieldType::Column, u"Year");
pivotTable.AddFieldToArea(PivotFieldType::Data, u"Amount");
PivotField categoryField = pivotTable.GetRowFields().Get(0);
categoryField.SetSubtotals(PivotFieldSubtotalType::Sum, true);
categoryField.SetSubtotals(PivotFieldSubtotalType::Average, true);
pivotTable.CalculateData();
workbook.Save(u"output_custom.xlsx");
Aspose::Cells::Cleanup();
return 0;
}
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.