@cj-tech-master/excelts 1.6.2 → 1.6.3-canary.20251224124621.73c5d94
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/README.md +36 -4
- package/README_zh.md +37 -6
- package/dist/browser/excelts.esm.js +19115 -0
- package/dist/browser/excelts.esm.js.map +1 -0
- package/dist/browser/excelts.esm.min.js +127 -0
- package/dist/browser/excelts.iife.js +13576 -46968
- package/dist/browser/excelts.iife.js.map +1 -1
- package/dist/browser/excelts.iife.min.js +25 -105
- package/dist/cjs/csv/csv-core.js +701 -0
- package/dist/cjs/csv/csv-stream.js +646 -0
- package/dist/cjs/csv/csv.base.js +154 -0
- package/dist/cjs/csv/csv.browser.js +68 -0
- package/dist/cjs/csv/csv.js +226 -162
- package/dist/cjs/doc/anchor.js +2 -2
- package/dist/cjs/doc/cell.js +22 -22
- package/dist/cjs/doc/column.js +7 -7
- package/dist/cjs/doc/data-validations.js +3 -3
- package/dist/cjs/doc/defined-names.js +13 -13
- package/dist/cjs/doc/image.js +7 -7
- package/dist/cjs/doc/modelcontainer.js +2 -2
- package/dist/cjs/doc/note.js +2 -2
- package/dist/cjs/doc/pivot-table.js +5 -5
- package/dist/cjs/doc/range.js +11 -11
- package/dist/cjs/doc/row.js +16 -16
- package/dist/cjs/doc/table.js +5 -5
- package/dist/cjs/doc/workbook.base.js +211 -0
- package/dist/cjs/doc/workbook.browser.js +62 -0
- package/dist/cjs/doc/workbook.js +68 -179
- package/dist/cjs/doc/worksheet.js +41 -41
- package/dist/cjs/index.js +49 -32
- package/dist/cjs/stream/xlsx/hyperlink-reader.js +6 -6
- package/dist/cjs/stream/xlsx/sheet-comments-writer.js +12 -12
- package/dist/cjs/stream/xlsx/sheet-rels-writer.js +4 -4
- package/dist/cjs/stream/xlsx/workbook-reader.js +29 -26
- package/dist/cjs/stream/xlsx/workbook-writer.js +71 -57
- package/dist/cjs/stream/xlsx/worksheet-reader.js +27 -23
- package/dist/cjs/stream/xlsx/worksheet-writer.js +72 -66
- package/dist/cjs/utils/browser-buffer.js +75 -0
- package/dist/cjs/utils/cell-format.js +2 -2
- package/dist/cjs/utils/cell-matrix.js +5 -5
- package/dist/cjs/utils/encryptor.browser.js +240 -0
- package/dist/cjs/utils/parse-sax.js +2 -2
- package/dist/cjs/utils/shared-formula.js +5 -5
- package/dist/cjs/utils/sheet-utils.js +13 -13
- package/dist/cjs/utils/stream-buf.browser.js +355 -0
- package/dist/cjs/utils/stream-buf.js +5 -5
- package/dist/cjs/utils/unzip/extract.js +11 -11
- package/dist/cjs/utils/unzip/index.js +21 -21
- package/dist/cjs/utils/unzip/parse-extra-field.js +3 -3
- package/dist/cjs/utils/unzip/parse.js +16 -16
- package/dist/cjs/utils/unzip/zip-parser.js +3 -3
- package/dist/cjs/utils/utils.base.js +161 -0
- package/dist/cjs/utils/utils.browser.js +89 -0
- package/dist/cjs/utils/utils.js +46 -154
- package/dist/cjs/utils/xml-stream.js +3 -3
- package/dist/cjs/utils/zip/compress.base.js +85 -0
- package/dist/cjs/utils/zip/compress.browser.js +83 -0
- package/dist/cjs/utils/zip/compress.js +18 -198
- package/dist/cjs/utils/zip/crc32.browser.js +88 -0
- package/dist/cjs/utils/zip/index.js +17 -17
- package/dist/cjs/utils/zip/zip-builder.js +10 -10
- package/dist/cjs/utils/zip-stream.browser.js +135 -0
- package/dist/cjs/utils/zip-stream.js +4 -4
- package/dist/cjs/xlsx/xform/base-xform.js +4 -4
- package/dist/cjs/xlsx/xform/book/defined-name-xform.js +4 -4
- package/dist/cjs/xlsx/xform/book/sheet-xform.js +4 -4
- package/dist/cjs/xlsx/xform/book/workbook-calc-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/book/workbook-pivot-cache-xform.js +2 -2
- package/dist/cjs/xlsx/xform/book/workbook-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/book/workbook-view-xform.js +2 -2
- package/dist/cjs/xlsx/xform/book/workbook-xform.js +24 -24
- package/dist/cjs/xlsx/xform/comment/comment-xform.js +4 -4
- package/dist/cjs/xlsx/xform/comment/comments-xform.js +6 -6
- package/dist/cjs/xlsx/xform/comment/style/vml-position-xform.js +2 -2
- package/dist/cjs/xlsx/xform/comment/style/vml-protection-xform.js +2 -2
- package/dist/cjs/xlsx/xform/comment/vml-anchor-xform.js +2 -2
- package/dist/cjs/xlsx/xform/comment/vml-client-data-xform.js +10 -10
- package/dist/cjs/xlsx/xform/comment/vml-notes-xform.js +6 -6
- package/dist/cjs/xlsx/xform/comment/vml-shape-xform.js +6 -6
- package/dist/cjs/xlsx/xform/comment/vml-textbox-xform.js +2 -2
- package/dist/cjs/xlsx/xform/composite-xform.js +2 -2
- package/dist/cjs/xlsx/xform/core/app-heading-pairs-xform.js +2 -2
- package/dist/cjs/xlsx/xform/core/app-titles-of-parts-xform.js +2 -2
- package/dist/cjs/xlsx/xform/core/app-xform.js +11 -11
- package/dist/cjs/xlsx/xform/core/content-types-xform.js +4 -4
- package/dist/cjs/xlsx/xform/core/core-xform.js +23 -23
- package/dist/cjs/xlsx/xform/core/relationship-xform.js +2 -2
- package/dist/cjs/xlsx/xform/core/relationships-xform.js +6 -6
- package/dist/cjs/xlsx/xform/drawing/base-cell-anchor-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/blip-fill-xform.js +4 -4
- package/dist/cjs/xlsx/xform/drawing/blip-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/c-nv-pic-pr-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/c-nv-pr-xform.js +6 -6
- package/dist/cjs/xlsx/xform/drawing/cell-position-xform.js +7 -7
- package/dist/cjs/xlsx/xform/drawing/drawing-xform.js +10 -10
- package/dist/cjs/xlsx/xform/drawing/ext-lst-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/ext-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/hlink-click-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/nv-pic-pr-xform.js +6 -6
- package/dist/cjs/xlsx/xform/drawing/one-cell-anchor-xform.js +10 -10
- package/dist/cjs/xlsx/xform/drawing/pic-xform.js +9 -9
- package/dist/cjs/xlsx/xform/drawing/two-cell-anchor-xform.js +9 -9
- package/dist/cjs/xlsx/xform/list-xform.js +2 -2
- package/dist/cjs/xlsx/xform/pivot-table/cache-field-xform.js +5 -5
- package/dist/cjs/xlsx/xform/pivot-table/cache-field.js +3 -3
- package/dist/cjs/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +10 -10
- package/dist/cjs/xlsx/xform/pivot-table/pivot-cache-records-xform.js +9 -9
- package/dist/cjs/xlsx/xform/pivot-table/pivot-table-xform.js +10 -11
- package/dist/cjs/xlsx/xform/sheet/auto-filter-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/cell-xform.js +65 -65
- package/dist/cjs/xlsx/xform/sheet/cf/cf-rule-xform.js +27 -27
- package/dist/cjs/xlsx/xform/sheet/cf/cfvo-xform.js +3 -3
- package/dist/cjs/xlsx/xform/sheet/cf/color-scale-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/cf/conditional-formatting-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/cf/conditional-formattings-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/cf/databar-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +5 -5
- package/dist/cjs/xlsx/xform/sheet/cf/formula-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/cf/icon-set-xform.js +11 -11
- package/dist/cjs/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +3 -3
- package/dist/cjs/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +11 -12
- package/dist/cjs/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +8 -8
- package/dist/cjs/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +26 -26
- package/dist/cjs/xlsx/xform/sheet/cf-ext/f-ext-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +14 -14
- package/dist/cjs/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/col-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/data-validations-xform.js +18 -18
- package/dist/cjs/xlsx/xform/sheet/dimension-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/drawing-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/ext-lst-xform.js +5 -5
- package/dist/cjs/xlsx/xform/sheet/header-footer-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/hyperlink-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/merge-cell-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/merges.js +8 -8
- package/dist/cjs/xlsx/xform/sheet/outline-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/page-breaks-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/page-margins-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/page-setup-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/page-setup-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/picture-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/print-options-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/row-breaks-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/row-xform.js +11 -11
- package/dist/cjs/xlsx/xform/sheet/sheet-format-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/sheet-properties-xform.js +8 -8
- package/dist/cjs/xlsx/xform/sheet/sheet-protection-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/sheet-view-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/table-part-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/worksheet-xform.js +68 -68
- package/dist/cjs/xlsx/xform/simple/boolean-xform.js +2 -2
- package/dist/cjs/xlsx/xform/simple/date-xform.js +2 -2
- package/dist/cjs/xlsx/xform/simple/float-xform.js +2 -2
- package/dist/cjs/xlsx/xform/simple/integer-xform.js +2 -2
- package/dist/cjs/xlsx/xform/simple/string-xform.js +2 -2
- package/dist/cjs/xlsx/xform/static-xform.js +4 -4
- package/dist/cjs/xlsx/xform/strings/phonetic-text-xform.js +6 -6
- package/dist/cjs/xlsx/xform/strings/rich-text-xform.js +6 -6
- package/dist/cjs/xlsx/xform/strings/shared-string-xform.js +8 -8
- package/dist/cjs/xlsx/xform/strings/shared-strings-xform.js +6 -6
- package/dist/cjs/xlsx/xform/strings/text-xform.js +2 -2
- package/dist/cjs/xlsx/xform/style/alignment-xform.js +8 -8
- package/dist/cjs/xlsx/xform/style/border-xform.js +8 -8
- package/dist/cjs/xlsx/xform/style/color-xform.js +2 -2
- package/dist/cjs/xlsx/xform/style/dxf-xform.js +14 -14
- package/dist/cjs/xlsx/xform/style/fill-xform.js +9 -9
- package/dist/cjs/xlsx/xform/style/font-xform.js +22 -22
- package/dist/cjs/xlsx/xform/style/numfmt-xform.js +5 -5
- package/dist/cjs/xlsx/xform/style/protection-xform.js +2 -2
- package/dist/cjs/xlsx/xform/style/style-xform.js +6 -6
- package/dist/cjs/xlsx/xform/style/styles-xform.js +39 -39
- package/dist/cjs/xlsx/xform/style/underline-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/auto-filter-xform.js +4 -4
- package/dist/cjs/xlsx/xform/table/custom-filter-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/filter-column-xform.js +9 -9
- package/dist/cjs/xlsx/xform/table/filter-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/table-column-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/table-style-info-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/table-xform.js +12 -12
- package/dist/cjs/xlsx/xlsx.base.js +742 -0
- package/dist/cjs/xlsx/xlsx.browser.js +205 -0
- package/dist/cjs/xlsx/xlsx.js +91 -833
- package/dist/esm/csv/csv-core.js +694 -0
- package/dist/esm/csv/csv-stream.js +638 -0
- package/dist/esm/csv/csv.base.js +141 -0
- package/dist/esm/csv/csv.browser.js +65 -0
- package/dist/esm/csv/csv.js +189 -159
- package/dist/esm/doc/workbook.base.js +207 -0
- package/dist/esm/doc/workbook.browser.js +59 -0
- package/dist/esm/doc/workbook.js +64 -175
- package/dist/esm/index.browser.js +33 -1
- package/dist/esm/index.js +23 -8
- package/dist/esm/local.js +0 -1
- package/dist/esm/stream/xlsx/hyperlink-reader.js +1 -1
- package/dist/esm/stream/xlsx/workbook-reader.js +7 -4
- package/dist/esm/stream/xlsx/workbook-writer.js +37 -23
- package/dist/esm/stream/xlsx/worksheet-reader.js +12 -8
- package/dist/esm/stream/xlsx/worksheet-writer.js +12 -6
- package/dist/esm/utils/browser-buffer.js +67 -0
- package/dist/esm/utils/encryptor.browser.js +237 -0
- package/dist/esm/utils/stream-buf.browser.js +352 -0
- package/dist/esm/utils/utils.base.js +142 -0
- package/dist/esm/utils/utils.browser.js +68 -0
- package/dist/esm/utils/utils.js +15 -123
- package/dist/esm/utils/zip/compress.base.js +80 -0
- package/dist/esm/utils/zip/compress.browser.js +76 -0
- package/dist/esm/utils/zip/compress.js +16 -164
- package/dist/esm/utils/zip/crc32.browser.js +82 -0
- package/dist/esm/utils/zip-stream.browser.js +132 -0
- package/dist/esm/xlsx/xform/pivot-table/pivot-table-xform.js +2 -3
- package/dist/esm/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +2 -3
- package/dist/esm/xlsx/xlsx.base.js +739 -0
- package/dist/esm/xlsx/xlsx.browser.js +202 -0
- package/dist/esm/xlsx/xlsx.js +87 -829
- package/dist/types/csv/csv-core.d.ts +207 -0
- package/dist/types/csv/csv-stream.d.ts +114 -0
- package/dist/types/csv/csv.base.d.ts +61 -0
- package/dist/types/csv/csv.browser.d.ts +33 -0
- package/dist/types/csv/csv.d.ts +97 -71
- package/dist/types/doc/anchor.d.ts +1 -1
- package/dist/types/doc/cell.d.ts +7 -7
- package/dist/types/doc/column.d.ts +3 -3
- package/dist/types/doc/defined-names.d.ts +4 -4
- package/dist/types/doc/image.d.ts +2 -2
- package/dist/types/doc/modelcontainer.d.ts +1 -1
- package/dist/types/doc/pivot-table.d.ts +1 -1
- package/dist/types/doc/range.d.ts +1 -1
- package/dist/types/doc/row.d.ts +3 -3
- package/dist/types/doc/table.d.ts +4 -4
- package/dist/types/doc/workbook.base.d.ts +111 -0
- package/dist/types/doc/workbook.browser.d.ts +38 -0
- package/dist/types/doc/workbook.d.ts +62 -92
- package/dist/types/doc/worksheet.d.ts +10 -10
- package/dist/types/index.browser.d.ts +19 -5
- package/dist/types/index.d.ts +24 -20
- package/dist/types/local.d.ts +0 -1
- package/dist/types/stream/xlsx/hyperlink-reader.d.ts +11 -11
- package/dist/types/stream/xlsx/workbook-reader.d.ts +125 -36
- package/dist/types/stream/xlsx/workbook-writer.d.ts +105 -22
- package/dist/types/stream/xlsx/worksheet-reader.d.ts +40 -22
- package/dist/types/stream/xlsx/worksheet-writer.d.ts +83 -49
- package/dist/types/types.d.ts +4 -16
- package/dist/types/utils/browser-buffer.d.ts +28 -0
- package/dist/types/utils/col-cache.d.ts +1 -1
- package/dist/types/utils/encryptor.browser.d.ts +28 -0
- package/dist/types/utils/sheet-utils.d.ts +3 -3
- package/dist/types/utils/stream-buf.browser.d.ts +41 -0
- package/dist/types/utils/unzip/extract.d.ts +6 -6
- package/dist/types/utils/unzip/index.d.ts +8 -8
- package/dist/types/utils/unzip/parse.d.ts +3 -3
- package/dist/types/utils/utils.base.d.ts +29 -0
- package/dist/types/utils/utils.browser.d.ts +29 -0
- package/dist/types/utils/utils.d.ts +6 -25
- package/dist/types/utils/zip/compress.base.d.ts +42 -0
- package/dist/types/utils/zip/compress.browser.d.ts +54 -0
- package/dist/types/utils/zip/compress.d.ts +13 -45
- package/dist/types/utils/zip/crc32.browser.d.ts +52 -0
- package/dist/types/utils/zip/index.d.ts +5 -5
- package/dist/types/utils/zip/zip-builder.d.ts +1 -1
- package/dist/types/utils/zip-stream.browser.d.ts +39 -0
- package/dist/types/xlsx/xform/base-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/defined-name-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/sheet-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-calc-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-pivot-cache-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-view-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/comment/comment-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/comment/comments-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/comment/style/vml-position-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/style/vml-protection-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-anchor-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-client-data-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-notes-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-shape-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-textbox-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/composite-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/app-heading-pairs-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/app-titles-of-parts-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/app-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/content-types-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/core-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/relationship-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/relationships-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/base-cell-anchor-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/blip-fill-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/drawing/blip-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/c-nv-pic-pr-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/c-nv-pr-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/cell-position-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/drawing/drawing-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/ext-lst-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/ext-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/hlink-click-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/nv-pic-pr-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/pic-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/list-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/pivot-table/cache-field-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/pivot-table/pivot-table-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/auto-filter-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cell-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/cf-rule-xform.d.ts +6 -6
- package/dist/types/xlsx/xform/sheet/cf/cfvo-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/color-scale-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf/conditional-formatting-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/conditional-formattings-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/sheet/cf/databar-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf/ext-lst-ref-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/formula-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/icon-set-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/sheet/cf-ext/databar-ext-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf-ext/f-ext-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf-ext/sqref-ext-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/col-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/data-validations-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/dimension-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/drawing-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/ext-lst-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/header-footer-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/hyperlink-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/merge-cell-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/outline-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/page-breaks-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/page-margins-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/page-setup-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/page-setup-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/picture-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/print-options-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/row-breaks-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/row-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/sheet-format-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/sheet-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/sheet-protection-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/sheet-view-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/table-part-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/worksheet-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/boolean-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/date-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/float-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/integer-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/string-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/static-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/strings/phonetic-text-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/strings/rich-text-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/strings/shared-string-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/strings/shared-strings-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/strings/text-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/alignment-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/border-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/style/color-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/dxf-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/fill-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/style/font-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/numfmt-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/protection-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/style-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/style/styles-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/style/underline-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/auto-filter-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/table/custom-filter-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/filter-column-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/table/filter-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/table-column-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/table-style-info-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/table-xform.d.ts +1 -1
- package/dist/types/xlsx/xlsx.base.d.ts +134 -0
- package/dist/types/xlsx/xlsx.browser.d.ts +31 -0
- package/dist/types/xlsx/xlsx.d.ts +20 -80
- package/package.json +13 -15
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WorkbookBase - Platform-independent base class for Workbook
|
|
3
|
+
*
|
|
4
|
+
* This file contains all the shared logic between Node.js and Browser versions.
|
|
5
|
+
* Platform-specific features (xlsx, csv, streaming) are added by subclasses.
|
|
6
|
+
*/
|
|
7
|
+
import { Worksheet } from "./worksheet.js";
|
|
8
|
+
import { DefinedNames } from "./defined-names.js";
|
|
9
|
+
// =============================================================================
|
|
10
|
+
// WorkbookBase Class
|
|
11
|
+
// =============================================================================
|
|
12
|
+
/**
|
|
13
|
+
* Base class for Workbook containing all platform-independent functionality.
|
|
14
|
+
*
|
|
15
|
+
* Subclasses add:
|
|
16
|
+
* - Node.js: xlsx (full), csv, streaming (createStreamWriter/Reader)
|
|
17
|
+
* - Browser: xlsx (buffer only), no csv, no streaming
|
|
18
|
+
*/
|
|
19
|
+
export class WorkbookBase {
|
|
20
|
+
constructor() {
|
|
21
|
+
this.category = "";
|
|
22
|
+
this.company = "";
|
|
23
|
+
this.created = new Date();
|
|
24
|
+
this.description = "";
|
|
25
|
+
this.keywords = "";
|
|
26
|
+
this.manager = "";
|
|
27
|
+
this.modified = this.created;
|
|
28
|
+
this.properties = {};
|
|
29
|
+
this.calcProperties = {};
|
|
30
|
+
this._worksheets = [];
|
|
31
|
+
this.subject = "";
|
|
32
|
+
this.title = "";
|
|
33
|
+
this.views = [];
|
|
34
|
+
this.media = [];
|
|
35
|
+
this.pivotTables = [];
|
|
36
|
+
this._definedNames = new DefinedNames();
|
|
37
|
+
}
|
|
38
|
+
// ===========================================================================
|
|
39
|
+
// Worksheet Management
|
|
40
|
+
// ===========================================================================
|
|
41
|
+
get nextId() {
|
|
42
|
+
// Find the next unique spot to add worksheet
|
|
43
|
+
for (let i = 1; i < this._worksheets.length; i++) {
|
|
44
|
+
if (!this._worksheets[i]) {
|
|
45
|
+
return i;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return this._worksheets.length || 1;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Add a new worksheet and return a reference to it
|
|
52
|
+
*/
|
|
53
|
+
addWorksheet(name, options) {
|
|
54
|
+
const id = this.nextId;
|
|
55
|
+
const lastOrderNo = this._worksheets.reduce((acc, ws) => ((ws && ws.orderNo) > acc ? ws.orderNo : acc), 0);
|
|
56
|
+
const worksheetOptions = {
|
|
57
|
+
...options,
|
|
58
|
+
id,
|
|
59
|
+
name,
|
|
60
|
+
orderNo: lastOrderNo + 1,
|
|
61
|
+
workbook: this
|
|
62
|
+
};
|
|
63
|
+
const worksheet = new Worksheet(worksheetOptions);
|
|
64
|
+
this._worksheets[id] = worksheet;
|
|
65
|
+
return worksheet;
|
|
66
|
+
}
|
|
67
|
+
removeWorksheetEx(worksheet) {
|
|
68
|
+
delete this._worksheets[worksheet.id];
|
|
69
|
+
}
|
|
70
|
+
removeWorksheet(id) {
|
|
71
|
+
const worksheet = this.getWorksheet(id);
|
|
72
|
+
if (worksheet) {
|
|
73
|
+
worksheet.destroy();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Fetch sheet by name or id
|
|
78
|
+
*/
|
|
79
|
+
getWorksheet(id) {
|
|
80
|
+
if (id === undefined) {
|
|
81
|
+
return this._worksheets.find(Boolean);
|
|
82
|
+
}
|
|
83
|
+
if (typeof id === "number") {
|
|
84
|
+
return this._worksheets[id];
|
|
85
|
+
}
|
|
86
|
+
if (typeof id === "string") {
|
|
87
|
+
return this._worksheets.find(worksheet => worksheet && worksheet.name === id);
|
|
88
|
+
}
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Return a clone of worksheets in order
|
|
93
|
+
*/
|
|
94
|
+
get worksheets() {
|
|
95
|
+
return this._worksheets
|
|
96
|
+
.slice(1)
|
|
97
|
+
.sort((a, b) => a.orderNo - b.orderNo)
|
|
98
|
+
.filter(Boolean);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Iterate over all sheets.
|
|
102
|
+
*
|
|
103
|
+
* Note: `workbook.worksheets.forEach` will still work but this is better.
|
|
104
|
+
*/
|
|
105
|
+
eachSheet(callback) {
|
|
106
|
+
this.worksheets.forEach(sheet => {
|
|
107
|
+
callback(sheet, sheet.id);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
// ===========================================================================
|
|
111
|
+
// Defined Names
|
|
112
|
+
// ===========================================================================
|
|
113
|
+
get definedNames() {
|
|
114
|
+
return this._definedNames;
|
|
115
|
+
}
|
|
116
|
+
// ===========================================================================
|
|
117
|
+
// Themes
|
|
118
|
+
// ===========================================================================
|
|
119
|
+
clearThemes() {
|
|
120
|
+
// Note: themes are not an exposed feature, meddle at your peril!
|
|
121
|
+
this._themes = undefined;
|
|
122
|
+
}
|
|
123
|
+
// ===========================================================================
|
|
124
|
+
// Images
|
|
125
|
+
// ===========================================================================
|
|
126
|
+
/**
|
|
127
|
+
* Add Image to Workbook and return the id
|
|
128
|
+
*/
|
|
129
|
+
addImage(image) {
|
|
130
|
+
const id = this.media.length;
|
|
131
|
+
this.media.push({ ...image, type: "image" });
|
|
132
|
+
return id;
|
|
133
|
+
}
|
|
134
|
+
getImage(id) {
|
|
135
|
+
return this.media[Number(id)];
|
|
136
|
+
}
|
|
137
|
+
// ===========================================================================
|
|
138
|
+
// Model (Serialization)
|
|
139
|
+
// ===========================================================================
|
|
140
|
+
get model() {
|
|
141
|
+
return {
|
|
142
|
+
creator: this.creator || "Unknown",
|
|
143
|
+
lastModifiedBy: this.lastModifiedBy || "Unknown",
|
|
144
|
+
lastPrinted: this.lastPrinted,
|
|
145
|
+
created: this.created,
|
|
146
|
+
modified: this.modified,
|
|
147
|
+
properties: this.properties,
|
|
148
|
+
worksheets: this.worksheets.map(worksheet => worksheet.model),
|
|
149
|
+
sheets: this.worksheets.map(ws => ws.model).filter(Boolean),
|
|
150
|
+
definedNames: this._definedNames.model,
|
|
151
|
+
views: this.views,
|
|
152
|
+
company: this.company,
|
|
153
|
+
manager: this.manager,
|
|
154
|
+
title: this.title,
|
|
155
|
+
subject: this.subject,
|
|
156
|
+
keywords: this.keywords,
|
|
157
|
+
category: this.category,
|
|
158
|
+
description: this.description,
|
|
159
|
+
language: this.language,
|
|
160
|
+
revision: this.revision,
|
|
161
|
+
contentStatus: this.contentStatus,
|
|
162
|
+
themes: this._themes,
|
|
163
|
+
media: this.media,
|
|
164
|
+
pivotTables: this.pivotTables,
|
|
165
|
+
calcProperties: this.calcProperties
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
set model(value) {
|
|
169
|
+
this.creator = value.creator;
|
|
170
|
+
this.lastModifiedBy = value.lastModifiedBy;
|
|
171
|
+
this.lastPrinted = value.lastPrinted;
|
|
172
|
+
this.created = value.created;
|
|
173
|
+
this.modified = value.modified;
|
|
174
|
+
this.company = value.company;
|
|
175
|
+
this.manager = value.manager;
|
|
176
|
+
this.title = value.title;
|
|
177
|
+
this.subject = value.subject;
|
|
178
|
+
this.keywords = value.keywords;
|
|
179
|
+
this.category = value.category;
|
|
180
|
+
this.description = value.description;
|
|
181
|
+
this.language = value.language;
|
|
182
|
+
this.revision = value.revision;
|
|
183
|
+
this.contentStatus = value.contentStatus;
|
|
184
|
+
this.properties = value.properties;
|
|
185
|
+
this.calcProperties = value.calcProperties;
|
|
186
|
+
this._worksheets = [];
|
|
187
|
+
value.worksheets.forEach(worksheetModel => {
|
|
188
|
+
const { id, name, state } = worksheetModel;
|
|
189
|
+
const orderNo = value.sheets && value.sheets.findIndex(ws => ws.id === id);
|
|
190
|
+
const worksheet = (this._worksheets[id] = new Worksheet({
|
|
191
|
+
id,
|
|
192
|
+
name,
|
|
193
|
+
orderNo: orderNo !== -1 ? orderNo : undefined,
|
|
194
|
+
state,
|
|
195
|
+
workbook: this
|
|
196
|
+
}));
|
|
197
|
+
worksheet.model = worksheetModel;
|
|
198
|
+
});
|
|
199
|
+
this._definedNames.model = value.definedNames;
|
|
200
|
+
this.views = value.views;
|
|
201
|
+
this._themes = value.themes;
|
|
202
|
+
this.media = value.media || [];
|
|
203
|
+
// Handle pivot tables - either newly created or loaded from file
|
|
204
|
+
// Loaded pivot tables come from loadedPivotTables after reconciliation
|
|
205
|
+
this.pivotTables = value.pivotTables || value.loadedPivotTables || [];
|
|
206
|
+
}
|
|
207
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workbook Browser version - No Node.js dependencies
|
|
3
|
+
*
|
|
4
|
+
* Extends WorkbookBase with:
|
|
5
|
+
* - xlsx: Buffer-based operations (load, writeBuffer)
|
|
6
|
+
* - csv: Buffer-based operations (load, writeString, writeBuffer)
|
|
7
|
+
* - streaming: NOT supported (throws error)
|
|
8
|
+
*/
|
|
9
|
+
import { WorkbookBase } from "./workbook.base.js";
|
|
10
|
+
import { XLSX } from "../xlsx/xlsx.browser.js";
|
|
11
|
+
import { CSV } from "../csv/csv.browser.js";
|
|
12
|
+
class Workbook extends WorkbookBase {
|
|
13
|
+
/**
|
|
14
|
+
* xlsx file format operations
|
|
15
|
+
* Supports: load (buffer), writeBuffer
|
|
16
|
+
* NOT supported: readFile, writeFile, read (stream), write (stream)
|
|
17
|
+
*/
|
|
18
|
+
get xlsx() {
|
|
19
|
+
if (!this._xlsx) {
|
|
20
|
+
this._xlsx = new XLSX(this);
|
|
21
|
+
}
|
|
22
|
+
return this._xlsx;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* CSV file format operations
|
|
26
|
+
* Supports: load (string/buffer), writeString, writeBuffer
|
|
27
|
+
* NOT supported: readFile, writeFile, read (stream), write (stream)
|
|
28
|
+
*/
|
|
29
|
+
get csv() {
|
|
30
|
+
if (!this._csv) {
|
|
31
|
+
this._csv = new CSV(this);
|
|
32
|
+
}
|
|
33
|
+
return this._csv;
|
|
34
|
+
}
|
|
35
|
+
// ===========================================================================
|
|
36
|
+
// Static Factory Methods - NOT available in browser
|
|
37
|
+
// TypeScript users: These methods don't exist on this type
|
|
38
|
+
// JavaScript users: These methods throw helpful errors
|
|
39
|
+
// ===========================================================================
|
|
40
|
+
/**
|
|
41
|
+
* @deprecated Streaming is not available in browser
|
|
42
|
+
* @throws Error with helpful message
|
|
43
|
+
*/
|
|
44
|
+
static createStreamWriter(_options) {
|
|
45
|
+
throw new Error("Streaming workbook writer is not available in browser. " +
|
|
46
|
+
"Use `new Workbook()` with `xlsx.writeBuffer()` instead, " +
|
|
47
|
+
"or import from 'excelts' (Node.js) for streaming support.");
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* @deprecated Streaming is not available in browser
|
|
51
|
+
* @throws Error with helpful message
|
|
52
|
+
*/
|
|
53
|
+
static createStreamReader(_input, _options) {
|
|
54
|
+
throw new Error("Streaming workbook reader is not available in browser. " +
|
|
55
|
+
"Use `new Workbook()` with `xlsx.load()` instead, " +
|
|
56
|
+
"or import from 'excelts' (Node.js) for streaming support.");
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
export { Workbook };
|
package/dist/esm/doc/workbook.js
CHANGED
|
@@ -1,33 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Workbook - Node.js version with full functionality
|
|
3
|
+
*
|
|
4
|
+
* Extends WorkbookBase with:
|
|
5
|
+
* - xlsx: Full file/stream/buffer support
|
|
6
|
+
* - csv: CSV read/write support
|
|
7
|
+
* - streaming: createStreamWriter/createStreamReader for large files
|
|
8
|
+
*/
|
|
9
|
+
import { WorkbookBase } from "./workbook.base.js";
|
|
3
10
|
import { XLSX } from "../xlsx/xlsx.js";
|
|
4
11
|
import { CSV } from "../csv/csv.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
// Manage String table, Hyperlink table, etc.
|
|
9
|
-
// Manage scaffolding for contained objects to write to/read from
|
|
10
|
-
class Workbook {
|
|
11
|
-
constructor() {
|
|
12
|
-
this.category = "";
|
|
13
|
-
this.company = "";
|
|
14
|
-
this.created = new Date();
|
|
15
|
-
this.description = "";
|
|
16
|
-
this.keywords = "";
|
|
17
|
-
this.manager = "";
|
|
18
|
-
this.modified = this.created;
|
|
19
|
-
this.properties = {};
|
|
20
|
-
this.calcProperties = {};
|
|
21
|
-
this._worksheets = [];
|
|
22
|
-
this.subject = "";
|
|
23
|
-
this.title = "";
|
|
24
|
-
this.views = [];
|
|
25
|
-
this.media = [];
|
|
26
|
-
this.pivotTables = [];
|
|
27
|
-
this._definedNames = new DefinedNames();
|
|
28
|
-
}
|
|
12
|
+
import { WorkbookWriter } from "../stream/xlsx/workbook-writer.js";
|
|
13
|
+
import { WorkbookReader } from "../stream/xlsx/workbook-reader.js";
|
|
14
|
+
class Workbook extends WorkbookBase {
|
|
29
15
|
/**
|
|
30
16
|
* xlsx file format operations
|
|
17
|
+
* Supports: readFile, writeFile, read (stream), write (stream), load (buffer), writeBuffer
|
|
31
18
|
*/
|
|
32
19
|
get xlsx() {
|
|
33
20
|
if (!this._xlsx) {
|
|
@@ -37,6 +24,7 @@ class Workbook {
|
|
|
37
24
|
}
|
|
38
25
|
/**
|
|
39
26
|
* csv file format operations
|
|
27
|
+
* Supports: readFile, writeFile, read (stream), write (stream)
|
|
40
28
|
*/
|
|
41
29
|
get csv() {
|
|
42
30
|
if (!this._csv) {
|
|
@@ -44,161 +32,62 @@ class Workbook {
|
|
|
44
32
|
}
|
|
45
33
|
return this._csv;
|
|
46
34
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
if (!this._worksheets[i]) {
|
|
51
|
-
return i;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
return this._worksheets.length || 1;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Add a new worksheet and return a reference to it
|
|
58
|
-
*/
|
|
59
|
-
addWorksheet(name, options) {
|
|
60
|
-
const id = this.nextId;
|
|
61
|
-
const lastOrderNo = this._worksheets.reduce((acc, ws) => ((ws && ws.orderNo) > acc ? ws.orderNo : acc), 0);
|
|
62
|
-
const worksheetOptions = {
|
|
63
|
-
...options,
|
|
64
|
-
id,
|
|
65
|
-
name,
|
|
66
|
-
orderNo: lastOrderNo + 1,
|
|
67
|
-
workbook: this
|
|
68
|
-
};
|
|
69
|
-
const worksheet = new Worksheet(worksheetOptions);
|
|
70
|
-
this._worksheets[id] = worksheet;
|
|
71
|
-
return worksheet;
|
|
72
|
-
}
|
|
73
|
-
removeWorksheetEx(worksheet) {
|
|
74
|
-
delete this._worksheets[worksheet.id];
|
|
75
|
-
}
|
|
76
|
-
removeWorksheet(id) {
|
|
77
|
-
const worksheet = this.getWorksheet(id);
|
|
78
|
-
if (worksheet) {
|
|
79
|
-
worksheet.destroy();
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Fetch sheet by name or id
|
|
84
|
-
*/
|
|
85
|
-
getWorksheet(id) {
|
|
86
|
-
if (id === undefined) {
|
|
87
|
-
return this._worksheets.find(Boolean);
|
|
88
|
-
}
|
|
89
|
-
if (typeof id === "number") {
|
|
90
|
-
return this._worksheets[id];
|
|
91
|
-
}
|
|
92
|
-
if (typeof id === "string") {
|
|
93
|
-
return this._worksheets.find(worksheet => worksheet && worksheet.name === id);
|
|
94
|
-
}
|
|
95
|
-
return undefined;
|
|
96
|
-
}
|
|
35
|
+
// ===========================================================================
|
|
36
|
+
// Static Factory Methods for Streaming (Node.js only)
|
|
37
|
+
// ===========================================================================
|
|
97
38
|
/**
|
|
98
|
-
*
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
.slice(1)
|
|
104
|
-
.sort((a, b) => a.orderNo - b.orderNo)
|
|
105
|
-
.filter(Boolean);
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Iterate over all sheets.
|
|
39
|
+
* Create a streaming workbook writer for large files.
|
|
40
|
+
* This is more memory-efficient than using Workbook for large datasets.
|
|
41
|
+
*
|
|
42
|
+
* @param options - Options for the workbook writer
|
|
43
|
+
* @returns A new WorkbookWriter instance
|
|
109
44
|
*
|
|
110
|
-
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts
|
|
47
|
+
* const writer = Workbook.createStreamWriter({ filename: "large-file.xlsx" });
|
|
48
|
+
* const sheet = writer.addWorksheet("Sheet1");
|
|
49
|
+
* for (let i = 0; i < 1000000; i++) {
|
|
50
|
+
* sheet.addRow([i, `Row ${i}`]).commit();
|
|
51
|
+
* }
|
|
52
|
+
* await writer.commit();
|
|
53
|
+
* ```
|
|
111
54
|
*/
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
callback(sheet, sheet.id);
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
get definedNames() {
|
|
118
|
-
return this._definedNames;
|
|
119
|
-
}
|
|
120
|
-
clearThemes() {
|
|
121
|
-
// Note: themes are not an exposed feature, meddle at your peril!
|
|
122
|
-
this._themes = undefined;
|
|
55
|
+
static createStreamWriter(options) {
|
|
56
|
+
return new WorkbookWriter(options);
|
|
123
57
|
}
|
|
124
58
|
/**
|
|
125
|
-
*
|
|
59
|
+
* Create a streaming workbook reader for large files.
|
|
60
|
+
* This is more memory-efficient than using Workbook.xlsx.readFile for large datasets.
|
|
61
|
+
*
|
|
62
|
+
* @param input - File path or readable stream
|
|
63
|
+
* @param options - Options for the workbook reader
|
|
64
|
+
* @returns A new WorkbookReader instance
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```ts
|
|
68
|
+
* const reader = Workbook.createStreamReader("large-file.xlsx");
|
|
69
|
+
* for await (const event of reader) {
|
|
70
|
+
* if (event.eventType === "worksheet") {
|
|
71
|
+
* const worksheet = event.value;
|
|
72
|
+
* for await (const row of worksheet) {
|
|
73
|
+
* console.log(row.values);
|
|
74
|
+
* }
|
|
75
|
+
* }
|
|
76
|
+
* }
|
|
77
|
+
* ```
|
|
126
78
|
*/
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
const id = this.media.length;
|
|
130
|
-
this.media.push({ ...image, type: "image" });
|
|
131
|
-
return id;
|
|
132
|
-
}
|
|
133
|
-
getImage(id) {
|
|
134
|
-
return this.media[Number(id)];
|
|
135
|
-
}
|
|
136
|
-
get model() {
|
|
137
|
-
return {
|
|
138
|
-
creator: this.creator || "Unknown",
|
|
139
|
-
lastModifiedBy: this.lastModifiedBy || "Unknown",
|
|
140
|
-
lastPrinted: this.lastPrinted,
|
|
141
|
-
created: this.created,
|
|
142
|
-
modified: this.modified,
|
|
143
|
-
properties: this.properties,
|
|
144
|
-
worksheets: this.worksheets.map(worksheet => worksheet.model),
|
|
145
|
-
sheets: this.worksheets.map(ws => ws.model).filter(Boolean),
|
|
146
|
-
definedNames: this._definedNames.model,
|
|
147
|
-
views: this.views,
|
|
148
|
-
company: this.company,
|
|
149
|
-
manager: this.manager,
|
|
150
|
-
title: this.title,
|
|
151
|
-
subject: this.subject,
|
|
152
|
-
keywords: this.keywords,
|
|
153
|
-
category: this.category,
|
|
154
|
-
description: this.description,
|
|
155
|
-
language: this.language,
|
|
156
|
-
revision: this.revision,
|
|
157
|
-
contentStatus: this.contentStatus,
|
|
158
|
-
themes: this._themes,
|
|
159
|
-
media: this.media,
|
|
160
|
-
pivotTables: this.pivotTables,
|
|
161
|
-
calcProperties: this.calcProperties
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
set model(value) {
|
|
165
|
-
this.creator = value.creator;
|
|
166
|
-
this.lastModifiedBy = value.lastModifiedBy;
|
|
167
|
-
this.lastPrinted = value.lastPrinted;
|
|
168
|
-
this.created = value.created;
|
|
169
|
-
this.modified = value.modified;
|
|
170
|
-
this.company = value.company;
|
|
171
|
-
this.manager = value.manager;
|
|
172
|
-
this.title = value.title;
|
|
173
|
-
this.subject = value.subject;
|
|
174
|
-
this.keywords = value.keywords;
|
|
175
|
-
this.category = value.category;
|
|
176
|
-
this.description = value.description;
|
|
177
|
-
this.language = value.language;
|
|
178
|
-
this.revision = value.revision;
|
|
179
|
-
this.contentStatus = value.contentStatus;
|
|
180
|
-
this.properties = value.properties;
|
|
181
|
-
this.calcProperties = value.calcProperties;
|
|
182
|
-
this._worksheets = [];
|
|
183
|
-
value.worksheets.forEach(worksheetModel => {
|
|
184
|
-
const { id, name, state } = worksheetModel;
|
|
185
|
-
const orderNo = value.sheets && value.sheets.findIndex(ws => ws.id === id);
|
|
186
|
-
const worksheet = (this._worksheets[id] = new Worksheet({
|
|
187
|
-
id,
|
|
188
|
-
name,
|
|
189
|
-
orderNo: orderNo !== -1 ? orderNo : undefined,
|
|
190
|
-
state,
|
|
191
|
-
workbook: this
|
|
192
|
-
}));
|
|
193
|
-
worksheet.model = worksheetModel;
|
|
194
|
-
});
|
|
195
|
-
this._definedNames.model = value.definedNames;
|
|
196
|
-
this.views = value.views;
|
|
197
|
-
this._themes = value.themes;
|
|
198
|
-
this.media = value.media || [];
|
|
199
|
-
// Handle pivot tables - either newly created or loaded from file
|
|
200
|
-
// Loaded pivot tables come from loadedPivotTables after reconciliation
|
|
201
|
-
this.pivotTables = value.pivotTables || value.loadedPivotTables || [];
|
|
79
|
+
static createStreamReader(input, options) {
|
|
80
|
+
return new WorkbookReader(input, options);
|
|
202
81
|
}
|
|
203
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Streaming workbook writer class for large files.
|
|
85
|
+
* @example new Workbook.Writer({ filename: "large.xlsx" })
|
|
86
|
+
*/
|
|
87
|
+
Workbook.Writer = WorkbookWriter;
|
|
88
|
+
/**
|
|
89
|
+
* Streaming workbook reader class for large files.
|
|
90
|
+
* @example new Workbook.Reader("large.xlsx")
|
|
91
|
+
*/
|
|
92
|
+
Workbook.Reader = WorkbookReader;
|
|
204
93
|
export { Workbook };
|
|
@@ -1,4 +1,36 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Browser entry point - No Node.js dependencies
|
|
3
|
+
* This version is optimized for browser environments with minimal bundle size
|
|
4
|
+
*/
|
|
5
|
+
// =============================================================================
|
|
6
|
+
// Main Classes (Browser-compatible)
|
|
7
|
+
// =============================================================================
|
|
8
|
+
export { Workbook } from "./doc/workbook.browser.js";
|
|
9
|
+
export { Worksheet } from "./doc/worksheet.js";
|
|
10
|
+
export { Row } from "./doc/row.js";
|
|
11
|
+
export { Column } from "./doc/column.js";
|
|
12
|
+
export { Cell } from "./doc/cell.js";
|
|
13
|
+
export { Range } from "./doc/range.js";
|
|
14
|
+
export { Image } from "./doc/image.js";
|
|
15
|
+
export * from "./doc/anchor.js";
|
|
16
|
+
export { Table } from "./doc/table.js";
|
|
17
|
+
export { DataValidations } from "./doc/data-validations.js";
|
|
18
|
+
// =============================================================================
|
|
19
|
+
// Enums
|
|
20
|
+
// =============================================================================
|
|
2
21
|
export * from "./doc/enums.js";
|
|
22
|
+
// =============================================================================
|
|
23
|
+
// Types
|
|
24
|
+
// =============================================================================
|
|
25
|
+
// Export all type definitions from types.ts
|
|
3
26
|
export * from "./types.js";
|
|
27
|
+
// =============================================================================
|
|
28
|
+
// Utilities
|
|
29
|
+
// =============================================================================
|
|
4
30
|
export * from "./utils/sheet-utils.js";
|
|
31
|
+
// =============================================================================
|
|
32
|
+
// NOTE: The following are NOT exported in browser build (Node.js only):
|
|
33
|
+
// - WorkbookWriter, WorkbookReader (streaming classes for file I/O)
|
|
34
|
+
// - WorksheetWriter, WorksheetReader (streaming classes)
|
|
35
|
+
// - ModelContainer
|
|
36
|
+
// =============================================================================
|
package/dist/esm/index.js
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
//
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Main Classes
|
|
3
|
+
// =============================================================================
|
|
2
4
|
export { Workbook } from "./doc/workbook.js";
|
|
3
|
-
export { ModelContainer } from "./doc/modelcontainer.js";
|
|
4
|
-
export { WorkbookWriter } from "./stream/xlsx/workbook-writer.js";
|
|
5
|
-
export { WorkbookReader } from "./stream/xlsx/workbook-reader.js";
|
|
6
5
|
export { Worksheet } from "./doc/worksheet.js";
|
|
7
|
-
export { WorksheetReader } from "./stream/xlsx/worksheet-reader.js";
|
|
8
|
-
export { WorksheetWriter } from "./stream/xlsx/worksheet-writer.js";
|
|
9
6
|
export { Row } from "./doc/row.js";
|
|
10
7
|
export { Column } from "./doc/column.js";
|
|
11
8
|
export { Cell } from "./doc/cell.js";
|
|
@@ -14,8 +11,26 @@ export { Image } from "./doc/image.js";
|
|
|
14
11
|
export * from "./doc/anchor.js";
|
|
15
12
|
export { Table } from "./doc/table.js";
|
|
16
13
|
export { DataValidations } from "./doc/data-validations.js";
|
|
17
|
-
//
|
|
14
|
+
// =============================================================================
|
|
15
|
+
// Node.js Only: Streaming Classes
|
|
16
|
+
// These can also be accessed via Workbook.createStreamWriter/createStreamReader
|
|
17
|
+
// =============================================================================
|
|
18
|
+
export { WorkbookWriter } from "./stream/xlsx/workbook-writer.js";
|
|
19
|
+
export { WorkbookReader } from "./stream/xlsx/workbook-reader.js";
|
|
20
|
+
export { WorksheetWriter } from "./stream/xlsx/worksheet-writer.js";
|
|
21
|
+
export { WorksheetReader } from "./stream/xlsx/worksheet-reader.js";
|
|
22
|
+
export { ModelContainer } from "./doc/modelcontainer.js";
|
|
23
|
+
// =============================================================================
|
|
24
|
+
// Enums
|
|
25
|
+
// =============================================================================
|
|
18
26
|
export * from "./doc/enums.js";
|
|
19
|
-
//
|
|
27
|
+
// =============================================================================
|
|
28
|
+
// Types
|
|
29
|
+
// =============================================================================
|
|
30
|
+
// Export all type definitions from types.ts
|
|
20
31
|
export * from "./types.js";
|
|
32
|
+
export { CsvParserStream, CsvFormatterStream } from "./csv/csv.js";
|
|
33
|
+
// =============================================================================
|
|
34
|
+
// Utilities
|
|
35
|
+
// =============================================================================
|
|
21
36
|
export * from "./utils/sheet-utils.js";
|
package/dist/esm/local.js
CHANGED
|
@@ -49,7 +49,7 @@ class HyperlinkReader extends EventEmitter {
|
|
|
49
49
|
case RelType.Hyperlink:
|
|
50
50
|
{
|
|
51
51
|
const relationship = {
|
|
52
|
-
type: Enums.RelationshipType.
|
|
52
|
+
type: Enums.RelationshipType.Hyperlink,
|
|
53
53
|
rId,
|
|
54
54
|
target: node.attributes.Target,
|
|
55
55
|
targetMode: node.attributes.TargetMode
|
|
@@ -67,6 +67,9 @@ class WorkbookReader extends EventEmitter {
|
|
|
67
67
|
}
|
|
68
68
|
async *parse(input, options) {
|
|
69
69
|
if (options) {
|
|
70
|
+
// Note: This replaces all options, not merging with constructor defaults.
|
|
71
|
+
// This is intentional for backwards compatibility - passing partial options
|
|
72
|
+
// to parse() will leave unspecified options as undefined.
|
|
70
73
|
this.options = options;
|
|
71
74
|
}
|
|
72
75
|
const stream = (this.stream = this._getStream(input || this.input));
|
|
@@ -310,13 +313,13 @@ class WorkbookReader extends EventEmitter {
|
|
|
310
313
|
const worksheetReader = new WorksheetReader({
|
|
311
314
|
workbook: this,
|
|
312
315
|
id: parseInt(sheetNo, 10),
|
|
313
|
-
iterator,
|
|
316
|
+
iterator: iterator,
|
|
314
317
|
options: this.options
|
|
315
318
|
});
|
|
316
|
-
const matchingRel = (this.workbookRels || []).find(
|
|
319
|
+
const matchingRel = (this.workbookRels || []).find(rel => rel.Target === `worksheets/sheet${sheetNo}.xml`);
|
|
317
320
|
const matchingSheet = matchingRel &&
|
|
318
321
|
this.model &&
|
|
319
|
-
(this.model.sheets || []).find(
|
|
322
|
+
(this.model.sheets || []).find(sheet => sheet.rId === matchingRel.Id);
|
|
320
323
|
if (matchingSheet) {
|
|
321
324
|
worksheetReader.id = matchingSheet.id;
|
|
322
325
|
worksheetReader.name = matchingSheet.name;
|
|
@@ -331,7 +334,7 @@ class WorkbookReader extends EventEmitter {
|
|
|
331
334
|
const hyperlinksReader = new HyperlinkReader({
|
|
332
335
|
workbook: this,
|
|
333
336
|
id: parseInt(sheetNo, 10),
|
|
334
|
-
iterator,
|
|
337
|
+
iterator: iterator,
|
|
335
338
|
options: this.options
|
|
336
339
|
});
|
|
337
340
|
if (this.options.hyperlinks === "emit") {
|