@cj-tech-master/excelts 5.0.6 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/index.browser.d.ts +1 -1
- package/dist/browser/index.d.ts +1 -1
- package/dist/browser/modules/archive/unzip/stream.base.js +19 -19
- package/dist/browser/modules/archive/unzip/stream.browser.js +3 -3
- package/dist/browser/modules/csv/csv-core.js +6 -3
- package/dist/browser/modules/csv/csv.browser.js +2 -2
- package/dist/browser/modules/csv/csv.js +1 -1
- package/dist/browser/modules/excel/anchor.js +4 -4
- package/dist/browser/modules/excel/cell.js +5 -5
- package/dist/browser/modules/excel/column.js +4 -4
- package/dist/browser/modules/excel/defined-names.js +1 -1
- package/dist/browser/modules/excel/form-control.js +1 -1
- package/dist/browser/modules/excel/pivot-table.d.ts +168 -17
- package/dist/browser/modules/excel/pivot-table.js +278 -70
- package/dist/browser/modules/excel/row.js +4 -4
- package/dist/browser/modules/excel/stream/workbook-reader.browser.js +4 -4
- package/dist/browser/modules/excel/stream/workbook-writer.browser.js +4 -4
- package/dist/browser/modules/excel/stream/worksheet-reader.js +1 -1
- package/dist/browser/modules/excel/stream/worksheet-writer.js +4 -4
- package/dist/browser/modules/excel/table.js +2 -2
- package/dist/browser/modules/excel/types.d.ts +0 -4
- package/dist/browser/modules/excel/utils/cell-format.js +3 -3
- package/dist/browser/modules/excel/utils/shared-formula.js +1 -1
- package/dist/browser/modules/excel/utils/stream-buf.js +2 -2
- package/dist/browser/modules/excel/utils/string-buf.js +1 -1
- package/dist/browser/modules/excel/workbook.d.ts +0 -2
- package/dist/browser/modules/excel/workbook.js +4 -5
- package/dist/browser/modules/excel/worksheet.js +9 -9
- package/dist/browser/modules/excel/xlsx/xform/base-xform.d.ts +5 -5
- package/dist/browser/modules/excel/xlsx/xform/base-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/book/defined-name-xform.js +2 -2
- package/dist/browser/modules/excel/xlsx/xform/book/workbook-view-xform.js +4 -4
- package/dist/browser/modules/excel/xlsx/xform/book/workbook-xform.js +16 -4
- package/dist/browser/modules/excel/xlsx/xform/comment/comment-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/comment/comments-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/comment/style/vml-position-xform.d.ts +3 -4
- package/dist/browser/modules/excel/xlsx/xform/comment/style/vml-position-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/comment/style/vml-protection-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/comment/vml-client-data-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/comment/vml-notes-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/comment/vml-shape-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/comment/vml-textbox-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/comment/vml-textbox-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/composite-xform.d.ts +1 -1
- package/dist/browser/modules/excel/xlsx/xform/core/app-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/core/content-types-xform.js +24 -11
- package/dist/browser/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/drawing/blip-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/drawing/cell-position-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/drawing/drawing-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/drawing/ext-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/drawing/ext-xform.js +2 -2
- package/dist/browser/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/drawing/vml-drawing-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/list-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/list-xform.js +3 -3
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field-xform.d.ts +5 -15
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field-xform.js +134 -52
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field.d.ts +14 -15
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field.js +244 -70
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +13 -29
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +213 -37
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +7 -34
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.js +143 -41
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.d.ts +101 -27
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +793 -408
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/raw-xml-collector.d.ts +78 -0
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/raw-xml-collector.js +149 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cell-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf/cf-rule-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf/conditional-formattings-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/sheet/col-xform.js +3 -3
- package/dist/browser/modules/excel/xlsx/xform/sheet/data-validations-xform.js +3 -3
- package/dist/browser/modules/excel/xlsx/xform/sheet/header-footer-xform.js +6 -6
- package/dist/browser/modules/excel/xlsx/xform/sheet/page-setup-xform.js +11 -11
- package/dist/browser/modules/excel/xlsx/xform/sheet/row-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-format-properties-xform.js +3 -3
- package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-view-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-view-xform.js +10 -10
- package/dist/browser/modules/excel/xlsx/xform/sheet/worksheet-xform.js +12 -12
- package/dist/browser/modules/excel/xlsx/xform/strings/phonetic-text-xform.js +2 -2
- package/dist/browser/modules/excel/xlsx/xform/style/color-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/style/style-xform.js +5 -5
- package/dist/browser/modules/excel/xlsx/xform/table/auto-filter-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/table/custom-filter-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/table/filter-column-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/table/filter-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/table/table-column-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/table/table-style-info-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/table/table-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xlsx.browser.d.ts +5 -2
- package/dist/browser/modules/excel/xlsx/xlsx.browser.js +88 -54
- package/dist/browser/utils/env.d.ts +0 -5
- package/dist/browser/utils/env.js +0 -7
- package/dist/browser/utils/utils.base.d.ts +8 -13
- package/dist/browser/utils/utils.base.js +40 -47
- package/dist/browser/utils/utils.browser.d.ts +1 -1
- package/dist/browser/utils/utils.browser.js +1 -1
- package/dist/browser/utils/utils.d.ts +1 -1
- package/dist/browser/utils/utils.js +1 -1
- package/dist/cjs/modules/archive/unzip/stream.base.js +19 -19
- package/dist/cjs/modules/archive/unzip/stream.browser.js +3 -3
- package/dist/cjs/modules/csv/csv-core.js +6 -3
- package/dist/cjs/modules/csv/csv.browser.js +2 -2
- package/dist/cjs/modules/csv/csv.js +1 -1
- package/dist/cjs/modules/excel/anchor.js +4 -4
- package/dist/cjs/modules/excel/cell.js +5 -5
- package/dist/cjs/modules/excel/column.js +4 -4
- package/dist/cjs/modules/excel/defined-names.js +1 -1
- package/dist/cjs/modules/excel/form-control.js +1 -1
- package/dist/cjs/modules/excel/pivot-table.js +280 -70
- package/dist/cjs/modules/excel/row.js +4 -4
- package/dist/cjs/modules/excel/stream/workbook-reader.browser.js +4 -4
- package/dist/cjs/modules/excel/stream/workbook-writer.browser.js +4 -4
- package/dist/cjs/modules/excel/stream/worksheet-reader.js +1 -1
- package/dist/cjs/modules/excel/stream/worksheet-writer.js +4 -4
- package/dist/cjs/modules/excel/table.js +2 -2
- package/dist/cjs/modules/excel/utils/cell-format.js +3 -3
- package/dist/cjs/modules/excel/utils/shared-formula.js +1 -1
- package/dist/cjs/modules/excel/utils/stream-buf.js +2 -2
- package/dist/cjs/modules/excel/utils/string-buf.js +1 -1
- package/dist/cjs/modules/excel/workbook.js +4 -5
- package/dist/cjs/modules/excel/worksheet.js +9 -9
- package/dist/cjs/modules/excel/xlsx/xform/base-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/book/defined-name-xform.js +2 -2
- package/dist/cjs/modules/excel/xlsx/xform/book/workbook-view-xform.js +4 -4
- package/dist/cjs/modules/excel/xlsx/xform/book/workbook-xform.js +16 -4
- package/dist/cjs/modules/excel/xlsx/xform/comment/style/vml-position-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/comment/style/vml-protection-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/comment/vml-shape-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/comment/vml-textbox-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/core/app-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/core/content-types-xform.js +24 -11
- package/dist/cjs/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/drawing/ext-xform.js +2 -2
- package/dist/cjs/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/list-xform.js +3 -3
- package/dist/cjs/modules/excel/xlsx/xform/pivot-table/cache-field-xform.js +133 -51
- package/dist/cjs/modules/excel/xlsx/xform/pivot-table/cache-field.js +245 -71
- package/dist/cjs/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +212 -36
- package/dist/cjs/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.js +142 -40
- package/dist/cjs/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +793 -408
- package/dist/cjs/modules/excel/xlsx/xform/pivot-table/raw-xml-collector.js +153 -0
- package/dist/cjs/modules/excel/xlsx/xform/sheet/cell-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/sheet/cf/cf-rule-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/sheet/cf/conditional-formattings-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/sheet/col-xform.js +3 -3
- package/dist/cjs/modules/excel/xlsx/xform/sheet/data-validations-xform.js +3 -3
- package/dist/cjs/modules/excel/xlsx/xform/sheet/header-footer-xform.js +6 -6
- package/dist/cjs/modules/excel/xlsx/xform/sheet/page-setup-xform.js +11 -11
- package/dist/cjs/modules/excel/xlsx/xform/sheet/sheet-format-properties-xform.js +3 -3
- package/dist/cjs/modules/excel/xlsx/xform/sheet/sheet-view-xform.js +10 -10
- package/dist/cjs/modules/excel/xlsx/xform/sheet/worksheet-xform.js +12 -12
- package/dist/cjs/modules/excel/xlsx/xform/strings/phonetic-text-xform.js +2 -2
- package/dist/cjs/modules/excel/xlsx/xform/style/color-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/style/style-xform.js +5 -5
- package/dist/cjs/modules/excel/xlsx/xlsx.browser.js +88 -54
- package/dist/cjs/utils/env.js +0 -8
- package/dist/cjs/utils/utils.base.js +41 -54
- package/dist/cjs/utils/utils.browser.js +2 -7
- package/dist/cjs/utils/utils.js +2 -7
- package/dist/esm/modules/archive/unzip/stream.base.js +19 -19
- package/dist/esm/modules/archive/unzip/stream.browser.js +3 -3
- package/dist/esm/modules/csv/csv-core.js +6 -3
- package/dist/esm/modules/csv/csv.browser.js +2 -2
- package/dist/esm/modules/csv/csv.js +1 -1
- package/dist/esm/modules/excel/anchor.js +4 -4
- package/dist/esm/modules/excel/cell.js +5 -5
- package/dist/esm/modules/excel/column.js +4 -4
- package/dist/esm/modules/excel/defined-names.js +1 -1
- package/dist/esm/modules/excel/form-control.js +1 -1
- package/dist/esm/modules/excel/pivot-table.js +278 -70
- package/dist/esm/modules/excel/row.js +4 -4
- package/dist/esm/modules/excel/stream/workbook-reader.browser.js +4 -4
- package/dist/esm/modules/excel/stream/workbook-writer.browser.js +4 -4
- package/dist/esm/modules/excel/stream/worksheet-reader.js +1 -1
- package/dist/esm/modules/excel/stream/worksheet-writer.js +4 -4
- package/dist/esm/modules/excel/table.js +2 -2
- package/dist/esm/modules/excel/utils/cell-format.js +3 -3
- package/dist/esm/modules/excel/utils/shared-formula.js +1 -1
- package/dist/esm/modules/excel/utils/stream-buf.js +2 -2
- package/dist/esm/modules/excel/utils/string-buf.js +1 -1
- package/dist/esm/modules/excel/workbook.js +4 -5
- package/dist/esm/modules/excel/worksheet.js +9 -9
- package/dist/esm/modules/excel/xlsx/xform/base-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/book/defined-name-xform.js +2 -2
- package/dist/esm/modules/excel/xlsx/xform/book/workbook-view-xform.js +4 -4
- package/dist/esm/modules/excel/xlsx/xform/book/workbook-xform.js +16 -4
- package/dist/esm/modules/excel/xlsx/xform/comment/style/vml-position-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/comment/style/vml-protection-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/comment/vml-shape-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/comment/vml-textbox-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/core/app-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/core/content-types-xform.js +24 -11
- package/dist/esm/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/drawing/ext-xform.js +2 -2
- package/dist/esm/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/list-xform.js +3 -3
- package/dist/esm/modules/excel/xlsx/xform/pivot-table/cache-field-xform.js +134 -52
- package/dist/esm/modules/excel/xlsx/xform/pivot-table/cache-field.js +244 -70
- package/dist/esm/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +213 -37
- package/dist/esm/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.js +143 -41
- package/dist/esm/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +793 -408
- package/dist/esm/modules/excel/xlsx/xform/pivot-table/raw-xml-collector.js +149 -0
- package/dist/esm/modules/excel/xlsx/xform/sheet/cell-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/sheet/cf/cf-rule-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/sheet/cf/conditional-formattings-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/sheet/col-xform.js +3 -3
- package/dist/esm/modules/excel/xlsx/xform/sheet/data-validations-xform.js +3 -3
- package/dist/esm/modules/excel/xlsx/xform/sheet/header-footer-xform.js +6 -6
- package/dist/esm/modules/excel/xlsx/xform/sheet/page-setup-xform.js +11 -11
- package/dist/esm/modules/excel/xlsx/xform/sheet/sheet-format-properties-xform.js +3 -3
- package/dist/esm/modules/excel/xlsx/xform/sheet/sheet-view-xform.js +10 -10
- package/dist/esm/modules/excel/xlsx/xform/sheet/worksheet-xform.js +12 -12
- package/dist/esm/modules/excel/xlsx/xform/strings/phonetic-text-xform.js +2 -2
- package/dist/esm/modules/excel/xlsx/xform/style/color-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/style/style-xform.js +5 -5
- package/dist/esm/modules/excel/xlsx/xlsx.browser.js +88 -54
- package/dist/esm/utils/env.js +0 -7
- package/dist/esm/utils/utils.base.js +40 -47
- package/dist/esm/utils/utils.browser.js +1 -1
- package/dist/esm/utils/utils.js +1 -1
- package/dist/iife/excelts.iife.js +1553 -718
- package/dist/iife/excelts.iife.js.map +1 -1
- package/dist/iife/excelts.iife.min.js +36 -105
- package/dist/types/index.browser.d.ts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/modules/excel/pivot-table.d.ts +168 -17
- package/dist/types/modules/excel/types.d.ts +0 -4
- package/dist/types/modules/excel/workbook.d.ts +0 -2
- package/dist/types/modules/excel/xlsx/xform/base-xform.d.ts +5 -5
- package/dist/types/modules/excel/xlsx/xform/comment/comment-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/comment/comments-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/comment/style/vml-position-xform.d.ts +3 -4
- package/dist/types/modules/excel/xlsx/xform/comment/vml-client-data-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/comment/vml-notes-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/comment/vml-textbox-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/composite-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/drawing/blip-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/drawing/cell-position-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/drawing/drawing-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/drawing/ext-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/drawing/vml-drawing-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/list-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/pivot-table/cache-field-xform.d.ts +5 -15
- package/dist/types/modules/excel/xlsx/xform/pivot-table/cache-field.d.ts +14 -15
- package/dist/types/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +13 -29
- package/dist/types/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +7 -34
- package/dist/types/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.d.ts +101 -27
- package/dist/types/modules/excel/xlsx/xform/pivot-table/raw-xml-collector.d.ts +78 -0
- package/dist/types/modules/excel/xlsx/xform/sheet/row-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/sheet/sheet-view-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/table/auto-filter-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/table/custom-filter-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/table/filter-column-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/table/filter-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/table/table-column-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/table/table-style-info-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/table/table-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xlsx.browser.d.ts +5 -2
- package/dist/types/utils/env.d.ts +0 -5
- package/dist/types/utils/utils.base.d.ts +8 -13
- package/dist/types/utils/utils.browser.d.ts +1 -1
- package/dist/types/utils/utils.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { XmlStream } from "../../../utils/xml-stream.js";
|
|
2
|
-
import { xmlEncode,
|
|
2
|
+
import { xmlEncode, parseOoxmlDate } from "../../../../../utils/utils.browser.js";
|
|
3
3
|
import { BaseXform } from "../base-xform.js";
|
|
4
|
+
import { formatDateForExcel } from "./cache-field.js";
|
|
5
|
+
import { PivotErrorValue } from "../../../pivot-table.js";
|
|
6
|
+
/** Attribute keys on <pivotCacheRecords> that are individually parsed (not collected into extraRootAttrs). */
|
|
7
|
+
const KNOWN_CACHE_RECORDS_ROOT_KEYS = new Set(["xmlns", "xmlns:r", "count"]);
|
|
4
8
|
class PivotCacheRecordsXform extends BaseXform {
|
|
5
9
|
constructor() {
|
|
6
10
|
super();
|
|
7
|
-
this.map = {};
|
|
8
11
|
this.model = null;
|
|
9
12
|
this.currentRecord = null;
|
|
10
13
|
}
|
|
11
|
-
prepare(_model) {
|
|
12
|
-
// No preparation needed
|
|
13
|
-
}
|
|
14
14
|
get tag() {
|
|
15
15
|
// http://www.datypic.com/sc/ooxml/e-ssml_pivotCacheRecords.html
|
|
16
16
|
return "pivotCacheRecords";
|
|
@@ -25,7 +25,7 @@ class PivotCacheRecordsXform extends BaseXform {
|
|
|
25
25
|
*/
|
|
26
26
|
render(xmlStream, model) {
|
|
27
27
|
// Check if this is a loaded model
|
|
28
|
-
const isLoaded = model.isLoaded || !("source" in model);
|
|
28
|
+
const isLoaded = ("isLoaded" in model && model.isLoaded) || !("source" in model);
|
|
29
29
|
if (isLoaded) {
|
|
30
30
|
this.renderLoaded(xmlStream, model);
|
|
31
31
|
}
|
|
@@ -38,7 +38,8 @@ class PivotCacheRecordsXform extends BaseXform {
|
|
|
38
38
|
*/
|
|
39
39
|
renderNew(xmlStream, model) {
|
|
40
40
|
const { source, cacheFields } = model;
|
|
41
|
-
|
|
41
|
+
// R8-O2: Use Array.isArray for type safety — getSheetValues() returns a sparse array of row arrays
|
|
42
|
+
const sourceBodyRows = source.getSheetValues().slice(2).filter(Array.isArray);
|
|
42
43
|
xmlStream.openXml(XmlStream.StdDocAttributes);
|
|
43
44
|
xmlStream.openNode(this.tag, {
|
|
44
45
|
...PivotCacheRecordsXform.PIVOT_CACHE_RECORDS_ATTRIBUTES,
|
|
@@ -52,10 +53,27 @@ class PivotCacheRecordsXform extends BaseXform {
|
|
|
52
53
|
*/
|
|
53
54
|
renderLoaded(xmlStream, model) {
|
|
54
55
|
xmlStream.openXml(XmlStream.StdDocAttributes);
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
56
|
+
// R8-B11: Use preserved root attributes instead of hardcoded MS namespaces.
|
|
57
|
+
// The base xmlns/xmlns:r are always needed; extra attributes (xmlns:mc, mc:Ignorable, etc.)
|
|
58
|
+
// come from the parsed original if available, otherwise fall back to the hardcoded defaults.
|
|
59
|
+
const rootAttrs = {
|
|
60
|
+
xmlns: PivotCacheRecordsXform.PIVOT_CACHE_RECORDS_ATTRIBUTES.xmlns,
|
|
61
|
+
"xmlns:r": PivotCacheRecordsXform.PIVOT_CACHE_RECORDS_ATTRIBUTES["xmlns:r"]
|
|
62
|
+
};
|
|
63
|
+
if (model.extraRootAttrs) {
|
|
64
|
+
for (const [k, v] of Object.entries(model.extraRootAttrs)) {
|
|
65
|
+
rootAttrs[k] = v;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
// No preserved attributes — use defaults for new-style rendering
|
|
70
|
+
rootAttrs["xmlns:mc"] = PivotCacheRecordsXform.PIVOT_CACHE_RECORDS_ATTRIBUTES["xmlns:mc"];
|
|
71
|
+
rootAttrs["mc:Ignorable"] =
|
|
72
|
+
PivotCacheRecordsXform.PIVOT_CACHE_RECORDS_ATTRIBUTES["mc:Ignorable"];
|
|
73
|
+
rootAttrs["xmlns:xr"] = PivotCacheRecordsXform.PIVOT_CACHE_RECORDS_ATTRIBUTES["xmlns:xr"];
|
|
74
|
+
}
|
|
75
|
+
rootAttrs.count = model.records.length;
|
|
76
|
+
xmlStream.openNode(this.tag, rootAttrs);
|
|
59
77
|
// Render each record
|
|
60
78
|
for (const record of model.records) {
|
|
61
79
|
xmlStream.writeXml("\n <r>");
|
|
@@ -75,19 +93,25 @@ class PivotCacheRecordsXform extends BaseXform {
|
|
|
75
93
|
case "x":
|
|
76
94
|
return `<x v="${value.value}" />`;
|
|
77
95
|
case "n":
|
|
96
|
+
// Guard against NaN/Infinity — not valid in OOXML, render as missing
|
|
97
|
+
if (!Number.isFinite(value.value)) {
|
|
98
|
+
return "<m />";
|
|
99
|
+
}
|
|
78
100
|
return `<n v="${value.value}" />`;
|
|
79
101
|
case "s":
|
|
80
|
-
return `<s v="${xmlEncode(
|
|
102
|
+
return `<s v="${xmlEncode(value.value)}" />`;
|
|
81
103
|
case "b":
|
|
82
104
|
return `<b v="${value.value ? "1" : "0"}" />`;
|
|
83
105
|
case "m":
|
|
84
106
|
return "<m />";
|
|
85
107
|
case "d":
|
|
86
|
-
return `<d v="${value.value
|
|
108
|
+
return `<d v="${formatDateForExcel(value.value)}" />`;
|
|
87
109
|
case "e":
|
|
88
|
-
return `<e v="${value.value}" />`;
|
|
89
|
-
default:
|
|
90
|
-
|
|
110
|
+
return `<e v="${xmlEncode(value.value)}" />`;
|
|
111
|
+
default: {
|
|
112
|
+
const _exhaustive = value;
|
|
113
|
+
throw new Error(`Unhandled record value type: ${_exhaustive.type}`);
|
|
114
|
+
}
|
|
91
115
|
}
|
|
92
116
|
}
|
|
93
117
|
// Helper methods for rendering new records
|
|
@@ -96,28 +120,54 @@ class PivotCacheRecordsXform extends BaseXform {
|
|
|
96
120
|
for (const row of sourceBodyRows) {
|
|
97
121
|
const realRow = row.slice(1);
|
|
98
122
|
parts.push("\n <r>");
|
|
99
|
-
|
|
123
|
+
const fieldCount = Math.min(realRow.length, cacheFields.length);
|
|
124
|
+
for (let i = 0; i < fieldCount; i++) {
|
|
100
125
|
parts.push("\n ");
|
|
101
126
|
parts.push(this.renderCellNew(realRow[i], cacheFields[i].sharedItems));
|
|
102
127
|
}
|
|
128
|
+
// Pad missing columns with <m /> so every record has exactly one value per cacheField (OOXML requirement)
|
|
129
|
+
for (let i = fieldCount; i < cacheFields.length; i++) {
|
|
130
|
+
parts.push("\n <m />");
|
|
131
|
+
}
|
|
103
132
|
parts.push("\n </r>");
|
|
104
133
|
}
|
|
105
134
|
return parts.join("");
|
|
106
135
|
}
|
|
107
136
|
renderCellNew(value, sharedItems) {
|
|
108
|
-
// Handle null/undefined values first
|
|
109
|
-
if (value === null ||
|
|
137
|
+
// Handle null/undefined/NaN values first — all treated as missing
|
|
138
|
+
if (value === null ||
|
|
139
|
+
value === undefined ||
|
|
140
|
+
(typeof value === "number" && !Number.isFinite(value))) {
|
|
141
|
+
// If no shared items, render as missing value directly
|
|
142
|
+
if (sharedItems === null) {
|
|
143
|
+
return "<m />";
|
|
144
|
+
}
|
|
145
|
+
// With shared items, look up null (undefined is treated as null)
|
|
146
|
+
const idx = sharedItems.indexOf(null);
|
|
147
|
+
if (idx >= 0) {
|
|
148
|
+
return `<x v="${idx}" />`;
|
|
149
|
+
}
|
|
150
|
+
// null not in sharedItems — render as missing
|
|
110
151
|
return "<m />";
|
|
111
152
|
}
|
|
112
|
-
// no shared items
|
|
153
|
+
// no shared items — render inline by type
|
|
113
154
|
if (sharedItems === null) {
|
|
155
|
+
if (value instanceof PivotErrorValue) {
|
|
156
|
+
return `<e v="${xmlEncode(value.code)}" />`;
|
|
157
|
+
}
|
|
158
|
+
if (typeof value === "boolean") {
|
|
159
|
+
return `<b v="${value ? "1" : "0"}" />`;
|
|
160
|
+
}
|
|
161
|
+
if (value instanceof Date) {
|
|
162
|
+
return `<d v="${formatDateForExcel(value)}" />`;
|
|
163
|
+
}
|
|
114
164
|
if (Number.isFinite(value)) {
|
|
115
165
|
return `<n v="${value}" />`;
|
|
116
166
|
}
|
|
117
167
|
return `<s v="${xmlEncode(String(value))}" />`;
|
|
118
168
|
}
|
|
119
|
-
// shared items
|
|
120
|
-
const sharedItemsIndex = sharedItems
|
|
169
|
+
// shared items — look up index (type-aware for Date)
|
|
170
|
+
const sharedItemsIndex = findSharedItemIndex(sharedItems, value);
|
|
121
171
|
if (sharedItemsIndex < 0) {
|
|
122
172
|
throw new Error(`${JSON.stringify(value)} not in sharedItems ${JSON.stringify(sharedItems)}`);
|
|
123
173
|
}
|
|
@@ -126,15 +176,24 @@ class PivotCacheRecordsXform extends BaseXform {
|
|
|
126
176
|
parseOpen(node) {
|
|
127
177
|
const { name, attributes } = node;
|
|
128
178
|
switch (name) {
|
|
129
|
-
case this.tag:
|
|
179
|
+
case this.tag: {
|
|
130
180
|
// pivotCacheRecords root element
|
|
131
181
|
this.reset();
|
|
182
|
+
// R8-B11: Collect unknown root attributes for roundtrip preservation
|
|
183
|
+
const extraRootAttrs = {};
|
|
184
|
+
for (const [k, v] of Object.entries(attributes)) {
|
|
185
|
+
if (!KNOWN_CACHE_RECORDS_ROOT_KEYS.has(k)) {
|
|
186
|
+
extraRootAttrs[k] = String(v);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
132
189
|
this.model = {
|
|
133
190
|
records: [],
|
|
134
|
-
count: parseInt(attributes.count
|
|
135
|
-
isLoaded: true
|
|
191
|
+
count: parseInt(attributes.count ?? "0", 10),
|
|
192
|
+
isLoaded: true,
|
|
193
|
+
extraRootAttrs: Object.keys(extraRootAttrs).length > 0 ? extraRootAttrs : undefined
|
|
136
194
|
};
|
|
137
195
|
break;
|
|
196
|
+
}
|
|
138
197
|
case "r":
|
|
139
198
|
// Start of a new record
|
|
140
199
|
this.currentRecord = [];
|
|
@@ -144,17 +203,22 @@ class PivotCacheRecordsXform extends BaseXform {
|
|
|
144
203
|
if (this.currentRecord) {
|
|
145
204
|
this.currentRecord.push({
|
|
146
205
|
type: "x",
|
|
147
|
-
value: parseInt(attributes.v
|
|
206
|
+
value: parseInt(attributes.v ?? "0", 10)
|
|
148
207
|
});
|
|
149
208
|
}
|
|
150
209
|
break;
|
|
151
210
|
case "n":
|
|
152
|
-
// Numeric value
|
|
211
|
+
// Numeric value — missing v → treat as missing to avoid fabricating 0
|
|
153
212
|
if (this.currentRecord) {
|
|
154
|
-
|
|
155
|
-
type: "
|
|
156
|
-
|
|
157
|
-
|
|
213
|
+
if (attributes.v === undefined || attributes.v === "") {
|
|
214
|
+
this.currentRecord.push({ type: "m" });
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
this.currentRecord.push({
|
|
218
|
+
type: "n",
|
|
219
|
+
value: parseFloat(attributes.v)
|
|
220
|
+
});
|
|
221
|
+
}
|
|
158
222
|
}
|
|
159
223
|
break;
|
|
160
224
|
case "s":
|
|
@@ -162,7 +226,7 @@ class PivotCacheRecordsXform extends BaseXform {
|
|
|
162
226
|
if (this.currentRecord) {
|
|
163
227
|
this.currentRecord.push({
|
|
164
228
|
type: "s",
|
|
165
|
-
value:
|
|
229
|
+
value: attributes.v ?? ""
|
|
166
230
|
});
|
|
167
231
|
}
|
|
168
232
|
break;
|
|
@@ -182,12 +246,25 @@ class PivotCacheRecordsXform extends BaseXform {
|
|
|
182
246
|
}
|
|
183
247
|
break;
|
|
184
248
|
case "d":
|
|
185
|
-
// Date value
|
|
249
|
+
// Date value — force UTC parsing (OOXML dates lack "Z" suffix)
|
|
250
|
+
// Missing/empty v → treat as missing value to avoid Invalid Date
|
|
186
251
|
if (this.currentRecord) {
|
|
187
|
-
|
|
188
|
-
type: "
|
|
189
|
-
|
|
190
|
-
|
|
252
|
+
if (!attributes.v) {
|
|
253
|
+
this.currentRecord.push({ type: "m" });
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
// R8-B13: Guard against Invalid Date from malformed date strings
|
|
257
|
+
const date = parseOoxmlDate(attributes.v);
|
|
258
|
+
if (isNaN(date.getTime())) {
|
|
259
|
+
this.currentRecord.push({ type: "m" });
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
this.currentRecord.push({
|
|
263
|
+
type: "d",
|
|
264
|
+
value: date
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
}
|
|
191
268
|
}
|
|
192
269
|
break;
|
|
193
270
|
case "e":
|
|
@@ -195,7 +272,7 @@ class PivotCacheRecordsXform extends BaseXform {
|
|
|
195
272
|
if (this.currentRecord) {
|
|
196
273
|
this.currentRecord.push({
|
|
197
274
|
type: "e",
|
|
198
|
-
value: attributes.v
|
|
275
|
+
value: attributes.v ?? ""
|
|
199
276
|
});
|
|
200
277
|
}
|
|
201
278
|
break;
|
|
@@ -220,9 +297,6 @@ class PivotCacheRecordsXform extends BaseXform {
|
|
|
220
297
|
}
|
|
221
298
|
return true;
|
|
222
299
|
}
|
|
223
|
-
reconcile(_model, _options) {
|
|
224
|
-
// No reconciliation needed
|
|
225
|
-
}
|
|
226
300
|
}
|
|
227
301
|
PivotCacheRecordsXform.PIVOT_CACHE_RECORDS_ATTRIBUTES = {
|
|
228
302
|
xmlns: "http://schemas.openxmlformats.org/spreadsheetml/2006/main",
|
|
@@ -232,3 +306,31 @@ PivotCacheRecordsXform.PIVOT_CACHE_RECORDS_ATTRIBUTES = {
|
|
|
232
306
|
"xmlns:xr": "http://schemas.microsoft.com/office/spreadsheetml/2014/revision"
|
|
233
307
|
};
|
|
234
308
|
export { PivotCacheRecordsXform };
|
|
309
|
+
/**
|
|
310
|
+
* Find the index of `value` in `sharedItems`, using type-aware comparison.
|
|
311
|
+
* - Date objects are compared by timestamp (getTime()) since === uses reference equality.
|
|
312
|
+
* - PivotErrorValue objects are compared by their code string.
|
|
313
|
+
* - All other types use strict equality (===) via indexOf.
|
|
314
|
+
*/
|
|
315
|
+
function findSharedItemIndex(sharedItems, value) {
|
|
316
|
+
if (value instanceof Date) {
|
|
317
|
+
const ts = value.getTime();
|
|
318
|
+
for (let i = 0; i < sharedItems.length; i++) {
|
|
319
|
+
const item = sharedItems[i];
|
|
320
|
+
if (item instanceof Date && item.getTime() === ts) {
|
|
321
|
+
return i;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
return -1;
|
|
325
|
+
}
|
|
326
|
+
if (value instanceof PivotErrorValue) {
|
|
327
|
+
for (let i = 0; i < sharedItems.length; i++) {
|
|
328
|
+
const item = sharedItems[i];
|
|
329
|
+
if (item instanceof PivotErrorValue && item.code === value.code) {
|
|
330
|
+
return i;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
return -1;
|
|
334
|
+
}
|
|
335
|
+
return sharedItems.indexOf(value);
|
|
336
|
+
}
|
|
@@ -1,37 +1,72 @@
|
|
|
1
|
+
import { XmlStream } from "@excel/utils/xml-stream";
|
|
1
2
|
import { BaseXform } from "@excel/xlsx/xform/base-xform";
|
|
3
|
+
import type { CacheField, DataField, PivotTableSubtotal } from "@excel/pivot-table";
|
|
2
4
|
/**
|
|
3
5
|
* Model for generating pivot table (with live source)
|
|
4
6
|
*/
|
|
5
|
-
interface
|
|
7
|
+
interface PivotTableRenderModel {
|
|
6
8
|
rows: number[];
|
|
7
9
|
columns: number[];
|
|
8
10
|
values: number[];
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
pages?: number[];
|
|
12
|
+
metric: PivotTableSubtotal;
|
|
13
|
+
/** Per-value metric overrides (parallel to `values` array). Falls back to `metric`. */
|
|
14
|
+
valueMetrics: PivotTableSubtotal[];
|
|
15
|
+
cacheFields: CacheField[];
|
|
16
|
+
cacheId: string | number;
|
|
17
|
+
tableNumber: number;
|
|
12
18
|
applyWidthHeightFormats: "0" | "1";
|
|
13
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* A single <item> element inside a pivotField's <items> collection.
|
|
22
|
+
* Items can reference a shared item index (x attribute) or indicate a subtotal type (t attribute).
|
|
23
|
+
*/
|
|
24
|
+
interface PivotFieldItem {
|
|
25
|
+
/** Shared item index (maps to cacheField sharedItems) */
|
|
26
|
+
x?: number;
|
|
27
|
+
/** Item type: "default" for subtotals, "sum", "count", "avg", "max", "min", "grand", etc. */
|
|
28
|
+
t?: string;
|
|
29
|
+
/** Hidden flag — "1" means item is filtered out */
|
|
30
|
+
h?: string;
|
|
31
|
+
/** Show details (hide details when "0") */
|
|
32
|
+
sd?: string;
|
|
33
|
+
/** Calculated item flag */
|
|
34
|
+
f?: string;
|
|
35
|
+
/** Missing flag */
|
|
36
|
+
m?: string;
|
|
37
|
+
/** Child items flag */
|
|
38
|
+
c?: string;
|
|
39
|
+
/** Drill across flag */
|
|
40
|
+
d?: string;
|
|
41
|
+
}
|
|
14
42
|
/**
|
|
15
43
|
* Parsed pivot field
|
|
16
44
|
*/
|
|
17
45
|
interface ParsedPivotField {
|
|
18
46
|
axis?: "axisRow" | "axisCol" | "axisPage" | "axisValues";
|
|
19
47
|
dataField?: boolean;
|
|
20
|
-
items?:
|
|
48
|
+
items?: PivotFieldItem[];
|
|
21
49
|
compact?: boolean;
|
|
22
50
|
outline?: boolean;
|
|
23
51
|
showAll?: boolean;
|
|
24
52
|
defaultSubtotal?: boolean;
|
|
53
|
+
numFmtId?: number;
|
|
54
|
+
sortType?: string;
|
|
55
|
+
autoSortScopeXml?: string;
|
|
56
|
+
subtotalTop?: boolean;
|
|
57
|
+
insertBlankRow?: boolean;
|
|
58
|
+
multipleItemSelectionAllowed?: boolean;
|
|
59
|
+
/** Bag of additional attributes not individually modeled (for roundtrip preservation) */
|
|
60
|
+
extraAttrs?: Record<string, string>;
|
|
25
61
|
}
|
|
26
62
|
/**
|
|
27
|
-
* Parsed
|
|
63
|
+
* Parsed page field (report filter)
|
|
28
64
|
*/
|
|
29
|
-
interface
|
|
30
|
-
name: string;
|
|
65
|
+
interface ParsedPageField {
|
|
31
66
|
fld: number;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
67
|
+
item?: number;
|
|
68
|
+
hier?: number;
|
|
69
|
+
name?: string;
|
|
35
70
|
}
|
|
36
71
|
/**
|
|
37
72
|
* Parsed pivot table model (loaded from file)
|
|
@@ -45,11 +80,14 @@ interface ParsedPivotTableModel {
|
|
|
45
80
|
firstHeaderRow?: number;
|
|
46
81
|
firstDataRow?: number;
|
|
47
82
|
firstDataCol?: number;
|
|
83
|
+
rowPageCount?: number;
|
|
84
|
+
colPageCount?: number;
|
|
48
85
|
};
|
|
49
86
|
pivotFields: ParsedPivotField[];
|
|
50
87
|
rowFields: number[];
|
|
51
88
|
colFields: number[];
|
|
52
|
-
|
|
89
|
+
pageFields: ParsedPageField[];
|
|
90
|
+
dataFields: DataField[];
|
|
53
91
|
applyNumberFormats?: string;
|
|
54
92
|
applyBorderFormats?: string;
|
|
55
93
|
applyFontFormats?: string;
|
|
@@ -58,30 +96,54 @@ interface ParsedPivotTableModel {
|
|
|
58
96
|
applyWidthHeightFormats?: string;
|
|
59
97
|
dataCaption?: string;
|
|
60
98
|
styleName?: string;
|
|
99
|
+
/** Full pivotTableStyleInfo attributes (preserved on roundtrip) */
|
|
100
|
+
styleInfo?: {
|
|
101
|
+
name?: string;
|
|
102
|
+
showRowHeaders?: string;
|
|
103
|
+
showColHeaders?: string;
|
|
104
|
+
showRowStripes?: string;
|
|
105
|
+
showColStripes?: string;
|
|
106
|
+
showLastColumn?: string;
|
|
107
|
+
};
|
|
61
108
|
updatedVersion?: string;
|
|
62
109
|
minRefreshableVersion?: string;
|
|
63
110
|
createdVersion?: string;
|
|
64
|
-
useAutoFormatting?:
|
|
65
|
-
itemPrintTitles?:
|
|
111
|
+
useAutoFormatting?: string;
|
|
112
|
+
itemPrintTitles?: string;
|
|
66
113
|
indent?: number;
|
|
67
114
|
compact?: boolean;
|
|
68
115
|
compactData?: boolean;
|
|
69
|
-
multipleFieldFilters?:
|
|
116
|
+
multipleFieldFilters?: string;
|
|
70
117
|
outline?: boolean;
|
|
71
118
|
outlineData?: boolean;
|
|
72
119
|
chartFormat?: number;
|
|
120
|
+
colGrandTotals?: string;
|
|
121
|
+
rowGrandTotals?: string;
|
|
122
|
+
showError?: string;
|
|
123
|
+
errorCaption?: string;
|
|
124
|
+
showMissing?: string;
|
|
125
|
+
missingCaption?: string;
|
|
126
|
+
grandTotalCaption?: string;
|
|
73
127
|
rowItems?: RowColItem[];
|
|
74
128
|
colItems?: RowColItem[];
|
|
75
129
|
hasColFields?: boolean;
|
|
130
|
+
hasRowItems?: boolean;
|
|
131
|
+
hasColItems?: boolean;
|
|
76
132
|
chartFormats?: ChartFormatItem[];
|
|
133
|
+
extLstXml?: string;
|
|
134
|
+
formatsXml?: string;
|
|
135
|
+
conditionalFormatsXml?: string;
|
|
136
|
+
filtersXml?: string;
|
|
137
|
+
unknownElementsXml?: string;
|
|
77
138
|
isLoaded?: boolean;
|
|
78
|
-
extensions?: any[];
|
|
79
139
|
}
|
|
80
140
|
/**
|
|
81
141
|
* Row or column item in pivot table
|
|
82
142
|
*/
|
|
83
143
|
interface RowColItem {
|
|
84
144
|
t?: string;
|
|
145
|
+
r?: number;
|
|
146
|
+
i?: number;
|
|
85
147
|
x: Array<{
|
|
86
148
|
v: number;
|
|
87
149
|
}>;
|
|
@@ -95,27 +157,28 @@ interface ChartFormatItem {
|
|
|
95
157
|
series?: boolean;
|
|
96
158
|
pivotAreaXml?: string;
|
|
97
159
|
}
|
|
98
|
-
declare class PivotTableXform extends BaseXform {
|
|
99
|
-
map: {
|
|
100
|
-
[key: string]: any;
|
|
101
|
-
};
|
|
102
|
-
model: ParsedPivotTableModel | null;
|
|
160
|
+
declare class PivotTableXform extends BaseXform<ParsedPivotTableModel | null> {
|
|
103
161
|
private state;
|
|
104
162
|
private currentPivotField;
|
|
105
163
|
private currentRowItem;
|
|
106
164
|
private currentColItem;
|
|
107
165
|
private currentChartFormat;
|
|
108
166
|
private pivotAreaXmlBuffer;
|
|
109
|
-
private
|
|
167
|
+
private autoSortScopeXmlBuffer;
|
|
168
|
+
private extLstCollector;
|
|
169
|
+
private formatsCollector;
|
|
170
|
+
private conditionalFormatsCollector;
|
|
171
|
+
private filtersCollector;
|
|
172
|
+
private unknownCollector;
|
|
173
|
+
private unknownElementsXmlParts;
|
|
110
174
|
constructor();
|
|
111
|
-
prepare(_model: any): void;
|
|
112
175
|
get tag(): string;
|
|
113
176
|
reset(): void;
|
|
114
177
|
/**
|
|
115
178
|
* Render pivot table XML.
|
|
116
179
|
* Supports both newly created models and loaded models.
|
|
117
180
|
*/
|
|
118
|
-
render(xmlStream:
|
|
181
|
+
render(xmlStream: XmlStream, model: PivotTableRenderModel | ParsedPivotTableModel): void;
|
|
119
182
|
/**
|
|
120
183
|
* Render newly created pivot table
|
|
121
184
|
*/
|
|
@@ -124,6 +187,15 @@ declare class PivotTableXform extends BaseXform {
|
|
|
124
187
|
* Render loaded pivot table (preserving original structure)
|
|
125
188
|
*/
|
|
126
189
|
private renderLoaded;
|
|
190
|
+
/**
|
|
191
|
+
* Build the root `<pivotTableDefinition>` attributes for a loaded (roundtrip) model.
|
|
192
|
+
* Extracted from renderLoaded to keep the render method focused on element structure.
|
|
193
|
+
*/
|
|
194
|
+
private buildLoadedRootAttributes;
|
|
195
|
+
/**
|
|
196
|
+
* Render `<chartFormats>` with preserved pivotArea XML for pivot chart roundtrip.
|
|
197
|
+
*/
|
|
198
|
+
private renderChartFormats;
|
|
127
199
|
/**
|
|
128
200
|
* Render a row or column item element
|
|
129
201
|
*/
|
|
@@ -133,11 +205,13 @@ declare class PivotTableXform extends BaseXform {
|
|
|
133
205
|
*/
|
|
134
206
|
private renderPivotFieldLoaded;
|
|
135
207
|
parseOpen(node: any): boolean;
|
|
136
|
-
parseText(
|
|
208
|
+
parseText(text: string): void;
|
|
209
|
+
/** Feed a close-tag to a collector; if it completes, store the result on the model. */
|
|
210
|
+
private tryCloseCollector;
|
|
137
211
|
parseClose(name: string): boolean;
|
|
138
|
-
|
|
139
|
-
static PIVOT_TABLE_ATTRIBUTES: {
|
|
212
|
+
static readonly PIVOT_TABLE_ATTRIBUTES: {
|
|
140
213
|
xmlns: string;
|
|
141
214
|
};
|
|
215
|
+
static readonly EXTLST_XML: string;
|
|
142
216
|
}
|
|
143
217
|
export { PivotTableXform, type ParsedPivotTableModel };
|