Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Сводная таблица обычно агрегирует каждое поле данных с помощью функции агрегации, такой как Sum или Count. Функция Excel Show Values As заменяет каждое отображаемое значение вторичным вычислением, полученным из этой агрегированной величины — например, процент от общего итога, скользящий итог, разницу от выбранного базового элемента или ранг — что позволяет выполнять сравнительный анализ без вспомогательных формул или вычисляемых столбцов.
Типичные применения включают анализ доли от общего итога, в том числе проценты по строке, столбцу или общему итогу; накопительную отчетность с использованием скользящего итога в поле периода; анализ отклонений от базового элемента с помощью разницы или процентной разницы; а также ранжирование значений от наименьшего к наибольшему или наоборот.
В Aspose.Cells for Go via C++ параметр PivotFieldDataDisplayFormat выбирает вторичное вычисление. Метод‑аксессор PivotField.GetShowValuesSetting() возвращает объект PivotShowValuesSetting, методы SetCalculationType, SetBaseFieldIndex, SetBaseItemPositionType и SetBaseItemIndex которого настраивают поведение; удобный метод PivotField.ShowValuesAs(...) применяет те же четыре параметра одним вызовом. Примените эти настройки к полю данных или полю значений, полученному через PivotTable.GetDataFields().
Поле данных сохраняет свою функцию агрегации, например Sum или Count, в то время как Show Values As изменяет только способ отображения агрегированного значения.
Помимо прямого указания значений PivotShowValuesSetting (см. последний раздел), метод‑удобство, вызываемый один раз, применяет ту же конфигурацию:
func (pivotField *PivotField) ShowValuesAs_PivotFieldDataDisplayFormat_Int_PivotItemPositionType_Int(displayFormat PivotFieldDataDisplayFormat, baseField int32, baseItemPositionType PivotItemPositionType, baseItem int32)
| Параметр | Значение | Требуется когда |
|---|---|---|
displayFormat |
Вторичная калькуляция PivotFieldDataDisplayFormat, которую необходимо применить. |
Всегда. |
baseField |
Нулевая позиция индекса базового поля среди базовых полей сводной таблицы (например, индекс строкового поля, к которому относится базовый элемент). | Только шесть базовых форматов ниже (DifferenceFrom, PercentageOf, PercentageDifferenceFrom, RunningTotalIn, PercentageOfRunningTotalIn, PercentageOfParentTotal); игнорируется всеми остальными форматами. |
baseItemPositionType |
Способ выбора базового элемента относительно текущего элемента: PivotItemPositionType.Previous, .Next или .Custom. |
Только три формата базового элемента (DifferenceFrom, PercentageOf, PercentageDifferenceFrom); игнорируется всеми остальными форматами. |
baseItem |
Нулевая позиция индекса базового элемента. | Только когда baseItemPositionType равно Custom (индекс указывает точный базовый элемент); игнорируется для Previous/Next и всех форматов без базового элемента — передайте 0. |
| Тип расчета | Поведение | Параметры базового элемента |
|---|---|---|
Normal |
Нет вторичной калькуляции; агрегированное значение отображается как есть (по умолчанию). | — |
DifferenceFrom |
Отображает значение как разницу от значения базового элемента в базовом поле. | baseField + Previous/Next/Custom (только baseItem при Custom) |
PercentageOf |
Отображает значение как процент от значения базового элемента в базовом поле. | baseField + Previous/Next/Custom (только baseItem при Custom) |
PercentageDifferenceFrom |
Отображает значение как процентную разницу от значения базового элемента в базовом поле. | baseField + Previous/Next/Custom (только baseItem при Custom) |
RunningTotalIn |
Отображает значение как скользящий итог для последовательных элементов базового поля. | baseField (поле, порядок элементов которого определяет накопление) |
PercentageOfRow |
Отображает значение как процент от итога строки. | — |
PercentageOfColumn |
Отображает значение как процент от итога столбца. | — |
PercentageOfTotal |
Отображает значение как процент от общего итога. | — |
Index |
Отображает значение по формуле Excel Index ((value * grand total) / (row total * column total)). | — |
PercentageOfParentRowTotal |
Отображает значение как процент от итога родительской строки (для вложенных строковых полей). | — |
PercentageOfParentColumnTotal |
Отображает значение как процент от итога родительского столбца (для вложенных столбцовых полей). | — |
PercentageOfParentTotal |
Отображает значение как процент от родительского итога. | baseField (базовое родительское поле) |
PercentageOfRunningTotalIn |
Отображает значение как процент от скользящего итога в базовом поле. | baseField (поле накопления) |
RankSmallestToLargest |
Присваивает ранг от наименьшего (1) к наибольшему. | — |
RankLargestToSmallest |
Присваивает ранг от наибольшего (1) к наименьшему. | — |
ShowValuesAs(...) записывает значения PivotShowValuesSetting (CalculationType, BaseFieldIndex, BaseItemPositionType, BaseItemIndex) — метод и объект настроек представляют два способа конфигурировать одно и то же состояние, аналогично выборам базового поля и базового элемента в диалоговом окне Show Values As в Excel.
Вызовите метод PivotField.ShowValuesAs с параметром PivotFieldDataDisplayFormat.PercentageOfTotal, чтобы преобразовать каждую ячейку поля данных, включая общий итог, в её долю от общего итога. Отображаемые числа, таким образом, представляют собой часть полного набора результатов. Этот формат сравнивает каждое значение только с общим итогом, поэтому не требуется базовое поле или базовый элемент — завершающие аргументы (0, PivotItemPositionType.Previous, 0) являются заполнительными и игнорируются, как указано в таблице параметров выше.
package main
import (
. "github.com/aspose-cells/aspose-cells-go-cpp/v26"
)
func main() {
// Load or create a workbook with source data
workbook, _ := NewWorkbook()
worksheets, _ := workbook.GetWorksheets()
dataSheet, _ := worksheets.Get_Int(0)
cells, _ := dataSheet.GetCells()
cell, _ := cells.Get_String("A1")
cell.PutValue_String("Fruit")
cell, _ = cells.Get_String("B1")
cell.PutValue_String("Amount")
fruits := []string{"Apple", "Banana", "Apple", "Cherry", "Banana", "Apple"}
amounts := []int{10, 20, 30, 40, 50, 60}
for i := range fruits {
fruitCell, _ := cells.Get_Int_Int(int32(i+1), int32(0))
fruitCell.PutValue_String(fruits[i])
amountCell, _ := cells.Get_Int_Int(int32(i+1), int32(1))
amountCell.PutValue_Int(int32(amounts[i]))
}
// Add a pivot table on a new worksheet
pivotSheetIndex, _ := worksheets.Add()
pivotSheet, _ := worksheets.Get_Int(pivotSheetIndex)
pivotTables, _ := pivotSheet.GetPivotTables()
pivotTable, _ := pivotTables.Add_String_Int_Int("=Sheet1!A1:B7", 2, 2)
pivotTable.AddFieldToArea_PivotFieldType_String(PivotFieldType_Row, "Fruit")
pivotTable.AddFieldToArea_PivotFieldType_String(PivotFieldType_Data, "Amount")
pivotTable.CalculateData()
// Show the Amount data field as a percentage of the grand total with the
// one-call method; PercentageOfTotal takes no base item, so the trailing
// base arguments (0, Previous, 0) are placeholders the format ignores
dataFields, _ := pivotTable.GetDataFields()
dataField, _ := dataFields.Get_Int(0)
dataField.ShowValuesAs_PivotFieldDataDisplayFormat_Int_PivotItemPositionType_Int(
PivotFieldDataDisplayFormat_PercentageOfTotal,
int32(0),
PivotItemPositionType_Previous,
int32(0),
)
pivotTable.CalculateData()
// Body now reads: Apple 47.62%, Banana 33.33%, Cherry 19.05%, Grand Total 100.00%
workbook.Save_String("ShowValuesAsPercentageOfTotal.xlsx")
}
Прочитайте текущую конфигурацию через PivotField.GetShowValuesSetting(): аксессор возвращает объект PivotShowValuesSetting поля, четыре метода‑геттера которого описывают активную калькуляцию Show Values As. Чтобы изменить конфигурацию, вызовите метод PivotField.ShowValuesAs — он записывает все четыре настройки за один вызов, поэтому необязательно задавать их по отдельности.
Объект PivotShowValuesSetting раскрывает четыре значения, которые записывает ShowValuesAs:
GetCalculationType() / SetCalculationType() выбирают вторичную калькуляцию PivotFieldDataDisplayFormat.GetBaseFieldIndex() / SetBaseFieldIndex() указывают нулевой индекс базового поля среди полей сводной таблицы. Используется базовыми форматами.GetBaseItemPositionType() / SetBaseItemPositionType() определяют расположение базового элемента относительно текущего и принимают PivotItemPositionType.Next, PivotItemPositionType.Previous или PivotItemPositionType.Custom.GetBaseItemIndex() / SetBaseItemIndex() указывают нулевой индекс базового элемента и используются, когда тип позиции равен Custom.ShowValuesAs снова вызовите PivotTable.CalculateData(), чтобы тело сводной таблицы пересчиталось и перерисовалось с обновлённой конфигурацией.package main
import (
"fmt"
. "github.com/aspose-cells/aspose-cells-go-cpp/v26"
)
func main() {
workbook, _ := NewWorkbook_String("ShowValuesAsPercentageOfTotal.xlsx")
worksheets, _ := workbook.GetWorksheets()
worksheet, _ := worksheets.Get_Int(1)
pivotTables, _ := worksheet.GetPivotTables()
pivotTable, _ := pivotTables.Get_Int(0)
dataFields, _ := pivotTable.GetDataFields()
dataField, _ := dataFields.Get_Int(0)
// Read the current show-values settings
settings, _ := dataField.GetShowValuesSetting()
calculationType, _ := settings.GetCalculationType()
baseFieldIndex, _ := settings.GetBaseFieldIndex()
baseItemPositionType, _ := settings.GetBaseItemPositionType()
baseItemIndex, _ := settings.GetBaseItemIndex()
fmt.Println("CalculationType:", calculationType)
fmt.Println("BaseFieldIndex:", baseFieldIndex)
fmt.Println("BaseItemPositionType:", baseItemPositionType)
fmt.Println("BaseItemIndex:", baseItemIndex)
// Switch to a base-item calculation with the one-call method: difference
// from the value of the previous item in the row field
rowFields, _ := pivotTable.GetRowFields()
rowField, _ := rowFields.Get_Int(0)
baseIndex, _ := rowField.GetBaseIndex()
dataField.ShowValuesAs_PivotFieldDataDisplayFormat_Int_PivotItemPositionType_Int(
PivotFieldDataDisplayFormat_DifferenceFrom,
baseIndex,
PivotItemPositionType_Previous,
0,
)
pivotTable.CalculateData()
// Note: the percentage number format saved by the previous example still
// clings to the data field cells; the underlying values are now differences
// Re-read the applied configuration
updatedSettings, _ := dataField.GetShowValuesSetting()
updatedCalculationType, _ := updatedSettings.GetCalculationType()
fmt.Println("CalculationType now:", updatedCalculationType)
workbook.Save_String("ShowValuesAsDifferenceFrom.xlsx")
}
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.