[{"id":"b66f8b1e-cc14-4e89-9679-abd5687d283d","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"569bb90a-ea68-46c6-96f1-ab151c120714","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"5eb52f08-2d1a-4362-9ffc-4871bdc10f3f","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"341dd607-b97d-4d70-bde2-53acda6b6c95","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"05349273-414f-4208-9ea2-c4fc8f4ea2cb","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"86089f76-b778-4d52-821e-6f27de3df613","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"b81e4fd6-1fc5-43a0-a258-b6e16a5cbec6","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"8aa8ce31-43e4-438e-951f-241608435260","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"37343f41-6ec2-4c7e-b21d-2cc18d5ce1e0","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"5915e52f-64f8-4146-b8bd-81bead6324a3","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"836ba889-af9e-460d-a4cc-c24d922795f2","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"4ae14b06-bb68-4394-a210-a46b8f028346","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"d8f42066-e9dc-4411-bdcf-43b1a203370c","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"7ef86f16-b1a0-49f7-9592-612b9be02b25","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"b29c7775-a9a4-451e-a1b5-01d19ed5ca5e","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"e56f3989-8f81-46af-90fa-a4813eeb976f","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"2526c963-f170-45a8-923e-91b0712a9810","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"24575cf0-501a-44f9-8426-c40f8f4b5552","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"1a6f8d7f-acd6-42be-8c4f-f464c6218381","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"82b176fd-5cab-498c-909e-8fa7d29c38d8","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"1708b3a9-4f37-44a8-8f0e-f9a2d2e5d940","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"c9ac246e-29fb-4bc4-8231-8439795bb590","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"94f2a5c3-2539-436a-af75-23fbbd1a3957","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"d99594f4-2d40-4df4-9419-ba2ca6aa3f7f","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"fd66e72d-0f10-4f57-9807-6db26290ab2e","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"8f344863-503d-4bc3-a594-3815e7d55f5c","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"9be82601-de9d-4c18-948a-23ab6f4dd431","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"6495f3c0-b463-47e0-b08a-ca949672211e","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"b4bede08-3f08-4839-ba4a-abc7ac195bde","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"4afcdfc0-3ff5-4f2b-a223-f8fc042a5bbe","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"422062c4-fa40-4771-a86f-008efe6d86e5","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"d87e8013-86a7-4840-8d25-6f62e14eb4ac","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"a6acedfd-4043-4c64-a5d1-aec3326df9e7","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"dbdc0b24-06c4-48b9-8d6c-7455119dc773","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"a3856849-954a-4cfc-96a6-382e530d3638","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"4a39306b-ffa5-433d-80a3-28e41f929b72","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]}]
        
(Showing Draft Content)

数据透视表设置

您可以修改数据透视表的设置以使其更易于理解。

自适应列

autoFitColumn方法可以根据数据自适应透视表列。下面的 GIF 演示了数据透视表中的自动调整列。

以下示例代码显示了如何自动调整数据透视表中的列。

// 自动适应列
myPivotTable.autoFitColumn();

计算字段

您可以将自定义字段添加到使用公式计算值的数据透视表的值字段区域。您可以在公式中使用常量或引用数据透视表的其他字段。

可以使用addCalcField方法添加计算字段。此外,您可以分别使用getCalcFields和removeCalcField方法获取和删除计算字段信息。

在下图中,数据透视表中添加了计算字段“Tax”。

以下示例代码显示了如何在数据透视表中添加、获取和删除计算字段。

// 添加计算字段“Tax”,等于 UnitPrice 字段的 0.08%
// UnitPrice is one of PivotTable's measure field
myPivotTable.addCalcField("Tax", "=UnitPrice*0.08");
myPivotTable.add("Tax", "Tax Calculated is 0.08 percent of Unit Price", GC.Spread.Pivot.PivotTableFieldType.valueField, GC.Pivot.SubtotalType.sum);

//  获取计算字段
calcFieldsInfo = myPivotTable.getCalcFields();
// 在新工作表中添加计算字段的名称
for (var i = 0; i < calcFieldsInfo.length; i++) {
    calcFieldSheet.setValue(i + 1, 0, calcFieldsInfo[i].fieldName);
    calcField = calcFieldsInfo[i].fieldName;
    calcFieldSheet.setValue(i + 1, 1, calcFieldsInfo[i].formula);
}

// 删除计算字段
myPivotTable.removeCalcField(calcField);

计算项

您可以将计算项目添加到行或列字段区域,在该区域中,它使用指定的公式计算数据透视表中的特定项目。您可以在公式中使用常量或引用数据透视表的其他字段

可以使用 addCalcItem方法添加计算项。此外,您可以分别使用getCalcItems、updateCalcItem和 removeCalcItem方法获取、更新和删除计算项 。

计算项的行为

  • 无法在数据透视表报表区域中的多个字段上实现计算项。
  • 计算项的公式 可以参考数据透视表的数据,而不是 工作表的数据。
  • SpreadJS可以在被分组的字段中添加计算项,在分组字段中添加基础信息。
  • 如果您有数字组字段或日期组字段,则只有选择组才能添加计算项。
  • 对数据透视表的所有引用都必须遵循“SourceFieldName[itemName]”格式。
  • 数据透视报表中所有值字段的“计算类型”只能是以下之一:TypeSum、Count、Max、Min、Product、Count Numbers。
  • 计算项中的字段不能存在于数据透视报表的筛选区域中。
  • SpreadJS 允许我们 设置 calcItem 的值是否应该聚合到小计中。

在下图中,计算项目 "Category[Bakery+Beverages]" 被添加到数据透视表中。

以下示例代码显示了如何在数据透视表中添加、更新和删除计算字段。

// Add Calculated Item "Category[Bakery+Beverages]" which is equal to "Category[Bakery] + Category[Beverages]"
function addCalcItem(myPivotTable) {
    myPivotTable.addCalcItem("Category", "Category[Bakery + Beverages]", "=Category[Bakery] + Category[Beverages]");
    myPivotTable.autoFitColumn();
    return myPivotTable;
}

// Update calculated item
function updateCalcItem(myPivotTable) {
    myPivotTable.updateCalcItem("Category", "Category[Bakery + Beverages]", "=Category[Bakery] - Category[Beverages]", 1);
    myPivotTable.options.calcItemAggregation = GC.Spread.Pivot.CalcItemAggregation.include;
    myPivotTable.autoFitColumn();
    return myPivotTable;
}

// Remove calculated item
function deleteCalcItem(myPivotTable) {
    myPivotTable.removeCalcItem("Category", "Category[Bakery + Beverages]");
    myPivotTable.autoFitColumn();
    return myPivotTable;
}

条件规则

您可以使用addConditionalRule方法在数据透视区域上应用条件规则。 此外,您可以使用getConditionalRules和[removeConditionalRule](/spreadjs/api/GC. Spread.Pivot.PivotTable.html#removeConditionalRule)方法。 无论数据透视表布局如何更改,条件规则都会按预期工作。

下图显示了值单元格中的颜色格式条件规则。

以下示例代码显示了如何在数据透视表中应用条件规则。

// 添加条件规则
myPivotTable.addConditionalRule([{ dataOnly: true, references: [{ fieldName: "City", items: ["Seattle"] }] }], new GC.Spread.Sheets.ConditionalFormatting.ScaleRule(GC.Spread.Sheets.ConditionalFormatting.RuleType.threeScaleRule, 1 /* LowestValue */, 0, "lightblue", 0 /* Number */, 500, "yellow", 2 /* HighestValue */, 2000, "green"));

合并并居中带有标签的单元格

您可以使用mergeItem选项合并并居中对齐带有标签的单元格 。此选项接受布尔值并根据数据透视表的定义布局工作,如下所述:

选项 紧凑型 区域分组型 表格型
Merge 只有列头 只有列头 行头和列头
Center 只有列头 行头和列头 行头和列头

在下面的 GIF 中,带有标签的单元格使用mergeItem选项合并并居中。

以下示例代码显示了如何在数据透视表中合并和居中对齐带有标签的单元格。

// 合并并居中标记单元格
myPivotTable.options.mergeItem = true;

数据透视表工具提示

您可以在数据透视表中启用工具提示以了解数据的其他含义。当鼠标悬停在枢轴数据上时,会出现工具提示数据。但是,如果值字段中没有明确的信息,则不会显示工具提示。您可以使用 showToolTip选项在行/列标题区域、数据区域和小计/grandTotal 区域中显示工具提示。

下图显示了当鼠标悬停在透视数据上时的工具提示。

以下示例代码显示了如何在数据透视表中启用工具提示。

//  在数据透视表中显示工具提示
myPivotTable.options.showToolTip = true;

数据透视表序列化和反序列化

您可以使用序列化和保存数据透视表数据序列化方法以及使用该序列化的数据透视表数据恢复到现有的数据透视表 反序列化方法。序列化支持以下数据透视表数据:字段、选项、筛选、排序、布局、数据透视表位置和主题。

以下示例代码序列化并保存数据透视表数据,打印序列化信息并将数据恢复到现有数据透视表。

// 使用serialize方法保存数据透视表数据
serialization = myPivotTable.serialize();
// 打印序列化信息
info = JSON.stringify(serialization, null, 2);
console.log(info);

// 使用反序列化方法恢复数据
myPivotTable.deserialize(serialization);

将空值显示为

SpreadJS 提供了以下选项来选择在数据透视表数据源中存在空值时是否显示任何自定义值。

  • showMissing 指示当实际值为空时是否应显示任何值。它接受布尔值并且默认为true。
  • missingCaption 指示当实际值为空时应显示什么值。它接受字符串和数字值,默认为空。

下图在数据透视表中将空值显示为'No Sales'

以下示例代码显示如何显示字符串值代替空值。

// 在空单元格中显示自定义值 
myPivotTable.options.showMissing = true;
myPivotTable.options.missingCaption = "No Sales";

显示没有数据的项

您可以使用showNoData方法在数据透视表中显示没有数据的项目, 并选择是否在字段中显示空白单元格。此方法接受参数,例如字段名称和是否应显示项目的布尔值。

此设置通过管理项目在数据透视表中的可见性来帮助用户比较数据源的项目。数据的可见性不取决于它是否具有任何值。

下图显示了每个商店的数据,包括没有销售的时期。

以下示例代码显示了如何显示没有数据的项目。

function initPivotTable(sheet) {
    myPivotTable = sheet.pivotTables.add("myPivotTable", "tableSales", 1, 1, GC.Spread.Pivot.PivotTableLayoutType.outline, GC.Spread.Pivot.PivotTableThemes.dark3);
    myPivotTable.suspendLayout();
    myPivotTable.add("City", "City", GC.Spread.Pivot.PivotTableFieldType.rowField);
    myPivotTable.add("OrderDate", "OrderDate", GC.Spread.Pivot.PivotTableFieldType.rowField);
    myPivotTable.add("Product", "Product", GC.Spread.Pivot.PivotTableFieldType.rowField);
    let groupInfo = { originFieldName: "OrderDate", dateGroups: [{ by: GC.Pivot.DateGroupType.months }] };
    myPivotTable.group(groupInfo);
    myPivotTable.add("Quantity", "Quantity", GC.Spread.Pivot.PivotTableFieldType.valueField, GC.Pivot.SubtotalType.sum);
    
    // 将 showNoData 设置为 true 以显示没有数量的产品
    myPivotTable.showNoData("Product", true);
    myPivotTable.resumeLayout();
    myPivotTable.autoFitColumn();
    return myPivotTable;
}

数据透视表将数据显示为

您可以使用showDataAs方法将数据透视表数据显示为不同类型的计算值。此方法接受字段名称和IPivotShowDataAsInfo对象属性。可以使用PivotShowDataAs枚举将值字段设置为不同的计算。 method. This method accepts field name and IPivotShowDataAsInfo object properties. The value fields can be set to different calculations using PivotShowDataAs enumeration.

在下面的 GIF 中,数据透视表显示了“Years”字段的运行总值

以下示例代码显示了如何显示 Years 的运行总值。

// 使用 showDataAs 方法
myPivotTable.showDataAs("Sum of quantity", { showDataAs: GC.Pivot.PivotShowDataAs.runTotal, baseFieldName: "Years" });

显示或隐藏标题

您可以通过 showHeaders 属性设置数据透视表是否显示行列方向的字段名称。 默认设置为true。

在下面的 GIF 中,数据透视表显示 并隐藏行和列标题。

以下示例代码显示了如何隐藏标题。

// set showHeader option to False to hide headers of pivot table
pt.options.showHeaders = false;

JSON导入导出没有样式

在将电子表格导入或导出为 JSON 格式时,您可以选择保留或删除数据透视表样式。 toJSONignorestyle 参数和 fromJSON 设置为 true 时的方法,删除数据透视缓存和数据透视表,同时 保留数据透视表值。

下图显示了从 JSON 文件导入时没有样式的数据透视表。

以下示例代码展示了如何在没有样式的情况下导入或导出一个json文件。

function bindExcelIOEvent(spread) {
    // import ssjson file when IgnoreStyle parameter is set to true
    var openButton = document.getElementById('openButton');
    openButton.addEventListener('click', function () {
        var file = document.getElementById("importFileName").files[0];
        var fileName = file.name;
        var suffix = fileName.substr(fileName.lastIndexOf('.'));

        if (suffix === '.ssjson' || suffix === 'json') {
            var reader = new FileReader();
            reader.onload = function () {
                var spreadJson = JSON.parse(this.result);
                spread.fromJSON(spreadJson, { ignoreStyle: true });
            };
            reader.readAsText(file);
        }
    });
    // export ssjson file when IgnoreStyle option is set to true
    var saveSSJSONButton = document.getElementById('saveSSJSONButton');
    saveSSJSONButton.addEventListener('click', function () {
        var fileName = "ExportedFile";
        var index = fileName.lastIndexOf('.');
        if (index >= 0) {
            fileName = fileName.substr(0, index) + '.ssjson';
        } else {
            fileName += '.ssjson';
        }
        var json = spread.toJSON({ includeBindingSource: true, ignoreStyle: true }),
            text = JSON.stringify(json);
        saveAs(new Blob([text], { type: "text/plain;charset=utf-8" }), fileName);
    });
}