@cj-tech-master/excelts 1.6.3 → 2.0.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/README.md +139 -24
- package/README_zh.md +140 -26
- package/dist/browser/excelts.esm.js +18468 -0
- package/dist/browser/excelts.esm.js.map +1 -0
- package/dist/browser/excelts.esm.min.js +125 -0
- package/dist/browser/excelts.iife.js +13107 -47146
- package/dist/browser/excelts.iife.js.map +1 -1
- package/dist/browser/excelts.iife.min.js +24 -106
- 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 +137 -0
- package/dist/cjs/csv/csv.browser.js +68 -0
- package/dist/cjs/csv/csv.js +218 -162
- package/dist/cjs/doc/anchor.js +2 -2
- package/dist/cjs/doc/cell.js +22 -22
- package/dist/cjs/doc/column.js +28 -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 +45 -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 +22 -22
- package/dist/cjs/stream/xlsx/workbook-writer.js +38 -38
- package/dist/cjs/stream/xlsx/worksheet-reader.js +17 -17
- package/dist/cjs/stream/xlsx/worksheet-writer.js +67 -60
- 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/datetime.js +648 -0
- package/dist/cjs/utils/encryptor.browser.js +240 -0
- package/dist/cjs/utils/parse-sax.js +1191 -13
- 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 +14 -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 +88 -0
- package/dist/cjs/utils/zip/compress.browser.js +127 -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/deflate-fallback.js +575 -0
- package/dist/cjs/utils/zip/index.js +17 -17
- package/dist/cjs/utils/zip/streaming-zip.js +264 -0
- 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-breaks-xform.js +38 -0
- 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 +15 -3
- 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 +15 -17
- 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 +75 -70
- 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 +162 -0
- package/dist/cjs/xlsx/xlsx.js +118 -892
- 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 +127 -0
- package/dist/esm/csv/csv.browser.js +65 -0
- package/dist/esm/csv/csv.js +181 -159
- package/dist/esm/doc/column.js +21 -0
- 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/doc/worksheet.js +4 -0
- 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/workbook-writer.js +1 -1
- package/dist/esm/stream/xlsx/worksheet-writer.js +8 -1
- package/dist/esm/utils/browser-buffer.js +67 -0
- package/dist/esm/utils/datetime.js +639 -0
- package/dist/esm/utils/encryptor.browser.js +237 -0
- package/dist/esm/utils/parse-sax.js +1188 -12
- package/dist/esm/utils/stream-buf.browser.js +352 -0
- package/dist/esm/utils/unzip/zip-parser.js +11 -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 +83 -0
- package/dist/esm/utils/zip/compress.browser.js +121 -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/deflate-fallback.js +570 -0
- package/dist/esm/utils/zip/streaming-zip.js +259 -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/xform/sheet/col-breaks-xform.js +35 -0
- package/dist/esm/xlsx/xform/sheet/page-breaks-xform.js +13 -1
- package/dist/esm/xlsx/xform/sheet/row-breaks-xform.js +11 -13
- package/dist/esm/xlsx/xform/sheet/worksheet-xform.js +7 -2
- package/dist/esm/xlsx/xlsx.base.js +739 -0
- package/dist/esm/xlsx/xlsx.browser.js +159 -0
- package/dist/esm/xlsx/xlsx.js +114 -888
- 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 +62 -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 +9 -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 +2 -2
- 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 +12 -10
- package/dist/types/index.browser.d.ts +19 -5
- package/dist/types/index.d.ts +24 -23
- package/dist/types/local.d.ts +0 -1
- package/dist/types/stream/xlsx/hyperlink-reader.d.ts +1 -1
- package/dist/types/stream/xlsx/workbook-reader.d.ts +4 -4
- package/dist/types/stream/xlsx/workbook-writer.d.ts +7 -7
- package/dist/types/stream/xlsx/worksheet-reader.d.ts +5 -5
- package/dist/types/stream/xlsx/worksheet-writer.d.ts +11 -9
- package/dist/types/types.d.ts +6 -0
- package/dist/types/utils/browser-buffer.d.ts +28 -0
- package/dist/types/utils/col-cache.d.ts +1 -1
- package/dist/types/utils/datetime.d.ts +85 -0
- package/dist/types/utils/encryptor.browser.d.ts +28 -0
- package/dist/types/utils/parse-sax.d.ts +108 -1
- 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/unzip/zip-parser.d.ts +5 -0
- 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 +45 -0
- package/dist/types/utils/zip/compress.browser.d.ts +63 -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/deflate-fallback.d.ts +39 -0
- package/dist/types/utils/zip/index.d.ts +5 -5
- package/dist/types/utils/zip/streaming-zip.d.ts +96 -0
- 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-breaks-xform.d.ts +16 -0
- 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 +5 -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 +5 -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 +16 -39
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* WorkbookBase - Platform-independent base class for Workbook
|
|
4
|
+
*
|
|
5
|
+
* This file contains all the shared logic between Node.js and Browser versions.
|
|
6
|
+
* Platform-specific features (xlsx, csv, streaming) are added by subclasses.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.WorkbookBase = void 0;
|
|
10
|
+
const worksheet_1 = require("./worksheet");
|
|
11
|
+
const defined_names_1 = require("./defined-names");
|
|
12
|
+
// =============================================================================
|
|
13
|
+
// WorkbookBase Class
|
|
14
|
+
// =============================================================================
|
|
15
|
+
/**
|
|
16
|
+
* Base class for Workbook containing all platform-independent functionality.
|
|
17
|
+
*
|
|
18
|
+
* Subclasses add:
|
|
19
|
+
* - Node.js: xlsx (full), csv, streaming (createStreamWriter/Reader)
|
|
20
|
+
* - Browser: xlsx (buffer only), no csv, no streaming
|
|
21
|
+
*/
|
|
22
|
+
class WorkbookBase {
|
|
23
|
+
constructor() {
|
|
24
|
+
this.category = "";
|
|
25
|
+
this.company = "";
|
|
26
|
+
this.created = new Date();
|
|
27
|
+
this.description = "";
|
|
28
|
+
this.keywords = "";
|
|
29
|
+
this.manager = "";
|
|
30
|
+
this.modified = this.created;
|
|
31
|
+
this.properties = {};
|
|
32
|
+
this.calcProperties = {};
|
|
33
|
+
this._worksheets = [];
|
|
34
|
+
this.subject = "";
|
|
35
|
+
this.title = "";
|
|
36
|
+
this.views = [];
|
|
37
|
+
this.media = [];
|
|
38
|
+
this.pivotTables = [];
|
|
39
|
+
this._definedNames = new defined_names_1.DefinedNames();
|
|
40
|
+
}
|
|
41
|
+
// ===========================================================================
|
|
42
|
+
// Worksheet Management
|
|
43
|
+
// ===========================================================================
|
|
44
|
+
get nextId() {
|
|
45
|
+
// Find the next unique spot to add worksheet
|
|
46
|
+
for (let i = 1; i < this._worksheets.length; i++) {
|
|
47
|
+
if (!this._worksheets[i]) {
|
|
48
|
+
return i;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return this._worksheets.length || 1;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Add a new worksheet and return a reference to it
|
|
55
|
+
*/
|
|
56
|
+
addWorksheet(name, options) {
|
|
57
|
+
const id = this.nextId;
|
|
58
|
+
const lastOrderNo = this._worksheets.reduce((acc, ws) => ((ws && ws.orderNo) > acc ? ws.orderNo : acc), 0);
|
|
59
|
+
const worksheetOptions = {
|
|
60
|
+
...options,
|
|
61
|
+
id,
|
|
62
|
+
name,
|
|
63
|
+
orderNo: lastOrderNo + 1,
|
|
64
|
+
workbook: this
|
|
65
|
+
};
|
|
66
|
+
const worksheet = new worksheet_1.Worksheet(worksheetOptions);
|
|
67
|
+
this._worksheets[id] = worksheet;
|
|
68
|
+
return worksheet;
|
|
69
|
+
}
|
|
70
|
+
removeWorksheetEx(worksheet) {
|
|
71
|
+
delete this._worksheets[worksheet.id];
|
|
72
|
+
}
|
|
73
|
+
removeWorksheet(id) {
|
|
74
|
+
const worksheet = this.getWorksheet(id);
|
|
75
|
+
if (worksheet) {
|
|
76
|
+
worksheet.destroy();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Fetch sheet by name or id
|
|
81
|
+
*/
|
|
82
|
+
getWorksheet(id) {
|
|
83
|
+
if (id === undefined) {
|
|
84
|
+
return this._worksheets.find(Boolean);
|
|
85
|
+
}
|
|
86
|
+
if (typeof id === "number") {
|
|
87
|
+
return this._worksheets[id];
|
|
88
|
+
}
|
|
89
|
+
if (typeof id === "string") {
|
|
90
|
+
return this._worksheets.find(worksheet => worksheet && worksheet.name === id);
|
|
91
|
+
}
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Return a clone of worksheets in order
|
|
96
|
+
*/
|
|
97
|
+
get worksheets() {
|
|
98
|
+
return this._worksheets
|
|
99
|
+
.slice(1)
|
|
100
|
+
.sort((a, b) => a.orderNo - b.orderNo)
|
|
101
|
+
.filter(Boolean);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Iterate over all sheets.
|
|
105
|
+
*
|
|
106
|
+
* Note: `workbook.worksheets.forEach` will still work but this is better.
|
|
107
|
+
*/
|
|
108
|
+
eachSheet(callback) {
|
|
109
|
+
this.worksheets.forEach(sheet => {
|
|
110
|
+
callback(sheet, sheet.id);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
// ===========================================================================
|
|
114
|
+
// Defined Names
|
|
115
|
+
// ===========================================================================
|
|
116
|
+
get definedNames() {
|
|
117
|
+
return this._definedNames;
|
|
118
|
+
}
|
|
119
|
+
// ===========================================================================
|
|
120
|
+
// Themes
|
|
121
|
+
// ===========================================================================
|
|
122
|
+
clearThemes() {
|
|
123
|
+
// Note: themes are not an exposed feature, meddle at your peril!
|
|
124
|
+
this._themes = undefined;
|
|
125
|
+
}
|
|
126
|
+
// ===========================================================================
|
|
127
|
+
// Images
|
|
128
|
+
// ===========================================================================
|
|
129
|
+
/**
|
|
130
|
+
* Add Image to Workbook and return the id
|
|
131
|
+
*/
|
|
132
|
+
addImage(image) {
|
|
133
|
+
const id = this.media.length;
|
|
134
|
+
this.media.push({ ...image, type: "image" });
|
|
135
|
+
return id;
|
|
136
|
+
}
|
|
137
|
+
getImage(id) {
|
|
138
|
+
return this.media[Number(id)];
|
|
139
|
+
}
|
|
140
|
+
// ===========================================================================
|
|
141
|
+
// Model (Serialization)
|
|
142
|
+
// ===========================================================================
|
|
143
|
+
get model() {
|
|
144
|
+
return {
|
|
145
|
+
creator: this.creator || "Unknown",
|
|
146
|
+
lastModifiedBy: this.lastModifiedBy || "Unknown",
|
|
147
|
+
lastPrinted: this.lastPrinted,
|
|
148
|
+
created: this.created,
|
|
149
|
+
modified: this.modified,
|
|
150
|
+
properties: this.properties,
|
|
151
|
+
worksheets: this.worksheets.map(worksheet => worksheet.model),
|
|
152
|
+
sheets: this.worksheets.map(ws => ws.model).filter(Boolean),
|
|
153
|
+
definedNames: this._definedNames.model,
|
|
154
|
+
views: this.views,
|
|
155
|
+
company: this.company,
|
|
156
|
+
manager: this.manager,
|
|
157
|
+
title: this.title,
|
|
158
|
+
subject: this.subject,
|
|
159
|
+
keywords: this.keywords,
|
|
160
|
+
category: this.category,
|
|
161
|
+
description: this.description,
|
|
162
|
+
language: this.language,
|
|
163
|
+
revision: this.revision,
|
|
164
|
+
contentStatus: this.contentStatus,
|
|
165
|
+
themes: this._themes,
|
|
166
|
+
media: this.media,
|
|
167
|
+
pivotTables: this.pivotTables,
|
|
168
|
+
calcProperties: this.calcProperties
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
set model(value) {
|
|
172
|
+
this.creator = value.creator;
|
|
173
|
+
this.lastModifiedBy = value.lastModifiedBy;
|
|
174
|
+
this.lastPrinted = value.lastPrinted;
|
|
175
|
+
this.created = value.created;
|
|
176
|
+
this.modified = value.modified;
|
|
177
|
+
this.company = value.company;
|
|
178
|
+
this.manager = value.manager;
|
|
179
|
+
this.title = value.title;
|
|
180
|
+
this.subject = value.subject;
|
|
181
|
+
this.keywords = value.keywords;
|
|
182
|
+
this.category = value.category;
|
|
183
|
+
this.description = value.description;
|
|
184
|
+
this.language = value.language;
|
|
185
|
+
this.revision = value.revision;
|
|
186
|
+
this.contentStatus = value.contentStatus;
|
|
187
|
+
this.properties = value.properties;
|
|
188
|
+
this.calcProperties = value.calcProperties;
|
|
189
|
+
this._worksheets = [];
|
|
190
|
+
value.worksheets.forEach(worksheetModel => {
|
|
191
|
+
const { id, name, state } = worksheetModel;
|
|
192
|
+
const orderNo = value.sheets && value.sheets.findIndex(ws => ws.id === id);
|
|
193
|
+
const worksheet = (this._worksheets[id] = new worksheet_1.Worksheet({
|
|
194
|
+
id,
|
|
195
|
+
name,
|
|
196
|
+
orderNo: orderNo !== -1 ? orderNo : undefined,
|
|
197
|
+
state,
|
|
198
|
+
workbook: this
|
|
199
|
+
}));
|
|
200
|
+
worksheet.model = worksheetModel;
|
|
201
|
+
});
|
|
202
|
+
this._definedNames.model = value.definedNames;
|
|
203
|
+
this.views = value.views;
|
|
204
|
+
this._themes = value.themes;
|
|
205
|
+
this.media = value.media || [];
|
|
206
|
+
// Handle pivot tables - either newly created or loaded from file
|
|
207
|
+
// Loaded pivot tables come from loadedPivotTables after reconciliation
|
|
208
|
+
this.pivotTables = value.pivotTables || value.loadedPivotTables || [];
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
exports.WorkbookBase = WorkbookBase;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Workbook Browser version - No Node.js dependencies
|
|
4
|
+
*
|
|
5
|
+
* Extends WorkbookBase with:
|
|
6
|
+
* - xlsx: Buffer-based operations (load, writeBuffer)
|
|
7
|
+
* - csv: Buffer-based operations (load, writeString, writeBuffer)
|
|
8
|
+
* - streaming: NOT supported (throws error)
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.Workbook = void 0;
|
|
12
|
+
const workbook_base_1 = require("./workbook.base");
|
|
13
|
+
const xlsx_browser_1 = require("../xlsx/xlsx.browser");
|
|
14
|
+
const csv_browser_1 = require("../csv/csv.browser");
|
|
15
|
+
class Workbook extends workbook_base_1.WorkbookBase {
|
|
16
|
+
/**
|
|
17
|
+
* xlsx file format operations
|
|
18
|
+
* Supports: load (buffer), writeBuffer
|
|
19
|
+
* NOT supported: readFile, writeFile, read (stream), write (stream)
|
|
20
|
+
*/
|
|
21
|
+
get xlsx() {
|
|
22
|
+
if (!this._xlsx) {
|
|
23
|
+
this._xlsx = new xlsx_browser_1.XLSX(this);
|
|
24
|
+
}
|
|
25
|
+
return this._xlsx;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* CSV file format operations
|
|
29
|
+
* Supports: load (string/buffer), writeString, writeBuffer
|
|
30
|
+
* NOT supported: readFile, writeFile, read (stream), write (stream)
|
|
31
|
+
*/
|
|
32
|
+
get csv() {
|
|
33
|
+
if (!this._csv) {
|
|
34
|
+
this._csv = new csv_browser_1.CSV(this);
|
|
35
|
+
}
|
|
36
|
+
return this._csv;
|
|
37
|
+
}
|
|
38
|
+
// ===========================================================================
|
|
39
|
+
// Static Factory Methods - NOT available in browser
|
|
40
|
+
// TypeScript users: These methods don't exist on this type
|
|
41
|
+
// JavaScript users: These methods throw helpful errors
|
|
42
|
+
// ===========================================================================
|
|
43
|
+
/**
|
|
44
|
+
* @deprecated Streaming is not available in browser
|
|
45
|
+
* @throws Error with helpful message
|
|
46
|
+
*/
|
|
47
|
+
static createStreamWriter(_options) {
|
|
48
|
+
throw new Error("Streaming workbook writer is not available in browser. " +
|
|
49
|
+
"Use `new Workbook()` with `xlsx.writeBuffer()` instead, " +
|
|
50
|
+
"or import from 'excelts' (Node.js) for streaming support.");
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* @deprecated Streaming is not available in browser
|
|
54
|
+
* @throws Error with helpful message
|
|
55
|
+
*/
|
|
56
|
+
static createStreamReader(_input, _options) {
|
|
57
|
+
throw new Error("Streaming workbook reader is not available in browser. " +
|
|
58
|
+
"Use `new Workbook()` with `xlsx.load()` instead, " +
|
|
59
|
+
"or import from 'excelts' (Node.js) for streaming support.");
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.Workbook = Workbook;
|
package/dist/cjs/doc/workbook.js
CHANGED
|
@@ -1,207 +1,96 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Workbook - Node.js version with full functionality
|
|
4
|
+
*
|
|
5
|
+
* Extends WorkbookBase with:
|
|
6
|
+
* - xlsx: Full file/stream/buffer support
|
|
7
|
+
* - csv: CSV read/write support
|
|
8
|
+
* - streaming: createStreamWriter/createStreamReader for large files
|
|
9
|
+
*/
|
|
2
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
11
|
exports.Workbook = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
// Access/Add/Delete individual worksheets
|
|
11
|
-
// Manage String table, Hyperlink table, etc.
|
|
12
|
-
// Manage scaffolding for contained objects to write to/read from
|
|
13
|
-
class Workbook {
|
|
14
|
-
constructor() {
|
|
15
|
-
this.category = "";
|
|
16
|
-
this.company = "";
|
|
17
|
-
this.created = new Date();
|
|
18
|
-
this.description = "";
|
|
19
|
-
this.keywords = "";
|
|
20
|
-
this.manager = "";
|
|
21
|
-
this.modified = this.created;
|
|
22
|
-
this.properties = {};
|
|
23
|
-
this.calcProperties = {};
|
|
24
|
-
this._worksheets = [];
|
|
25
|
-
this.subject = "";
|
|
26
|
-
this.title = "";
|
|
27
|
-
this.views = [];
|
|
28
|
-
this.media = [];
|
|
29
|
-
this.pivotTables = [];
|
|
30
|
-
this._definedNames = new defined_names_js_1.DefinedNames();
|
|
31
|
-
}
|
|
12
|
+
const workbook_base_1 = require("./workbook.base");
|
|
13
|
+
const xlsx_1 = require("../xlsx/xlsx");
|
|
14
|
+
const csv_1 = require("../csv/csv");
|
|
15
|
+
const workbook_writer_1 = require("../stream/xlsx/workbook-writer");
|
|
16
|
+
const workbook_reader_1 = require("../stream/xlsx/workbook-reader");
|
|
17
|
+
class Workbook extends workbook_base_1.WorkbookBase {
|
|
32
18
|
/**
|
|
33
19
|
* xlsx file format operations
|
|
20
|
+
* Supports: readFile, writeFile, read (stream), write (stream), load (buffer), writeBuffer
|
|
34
21
|
*/
|
|
35
22
|
get xlsx() {
|
|
36
23
|
if (!this._xlsx) {
|
|
37
|
-
this._xlsx = new
|
|
24
|
+
this._xlsx = new xlsx_1.XLSX(this);
|
|
38
25
|
}
|
|
39
26
|
return this._xlsx;
|
|
40
27
|
}
|
|
41
28
|
/**
|
|
42
29
|
* csv file format operations
|
|
30
|
+
* Supports: readFile, writeFile, read (stream), write (stream)
|
|
43
31
|
*/
|
|
44
32
|
get csv() {
|
|
45
33
|
if (!this._csv) {
|
|
46
|
-
this._csv = new
|
|
34
|
+
this._csv = new csv_1.CSV(this);
|
|
47
35
|
}
|
|
48
36
|
return this._csv;
|
|
49
37
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
if (!this._worksheets[i]) {
|
|
54
|
-
return i;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return this._worksheets.length || 1;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Add a new worksheet and return a reference to it
|
|
61
|
-
*/
|
|
62
|
-
addWorksheet(name, options) {
|
|
63
|
-
const id = this.nextId;
|
|
64
|
-
const lastOrderNo = this._worksheets.reduce((acc, ws) => ((ws && ws.orderNo) > acc ? ws.orderNo : acc), 0);
|
|
65
|
-
const worksheetOptions = {
|
|
66
|
-
...options,
|
|
67
|
-
id,
|
|
68
|
-
name,
|
|
69
|
-
orderNo: lastOrderNo + 1,
|
|
70
|
-
workbook: this
|
|
71
|
-
};
|
|
72
|
-
const worksheet = new worksheet_js_1.Worksheet(worksheetOptions);
|
|
73
|
-
this._worksheets[id] = worksheet;
|
|
74
|
-
return worksheet;
|
|
75
|
-
}
|
|
76
|
-
removeWorksheetEx(worksheet) {
|
|
77
|
-
delete this._worksheets[worksheet.id];
|
|
78
|
-
}
|
|
79
|
-
removeWorksheet(id) {
|
|
80
|
-
const worksheet = this.getWorksheet(id);
|
|
81
|
-
if (worksheet) {
|
|
82
|
-
worksheet.destroy();
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Fetch sheet by name or id
|
|
87
|
-
*/
|
|
88
|
-
getWorksheet(id) {
|
|
89
|
-
if (id === undefined) {
|
|
90
|
-
return this._worksheets.find(Boolean);
|
|
91
|
-
}
|
|
92
|
-
if (typeof id === "number") {
|
|
93
|
-
return this._worksheets[id];
|
|
94
|
-
}
|
|
95
|
-
if (typeof id === "string") {
|
|
96
|
-
return this._worksheets.find(worksheet => worksheet && worksheet.name === id);
|
|
97
|
-
}
|
|
98
|
-
return undefined;
|
|
99
|
-
}
|
|
38
|
+
// ===========================================================================
|
|
39
|
+
// Static Factory Methods for Streaming (Node.js only)
|
|
40
|
+
// ===========================================================================
|
|
100
41
|
/**
|
|
101
|
-
*
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
.slice(1)
|
|
107
|
-
.sort((a, b) => a.orderNo - b.orderNo)
|
|
108
|
-
.filter(Boolean);
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Iterate over all sheets.
|
|
42
|
+
* Create a streaming workbook writer for large files.
|
|
43
|
+
* This is more memory-efficient than using Workbook for large datasets.
|
|
44
|
+
*
|
|
45
|
+
* @param options - Options for the workbook writer
|
|
46
|
+
* @returns A new WorkbookWriter instance
|
|
112
47
|
*
|
|
113
|
-
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```ts
|
|
50
|
+
* const writer = Workbook.createStreamWriter({ filename: "large-file.xlsx" });
|
|
51
|
+
* const sheet = writer.addWorksheet("Sheet1");
|
|
52
|
+
* for (let i = 0; i < 1000000; i++) {
|
|
53
|
+
* sheet.addRow([i, `Row ${i}`]).commit();
|
|
54
|
+
* }
|
|
55
|
+
* await writer.commit();
|
|
56
|
+
* ```
|
|
114
57
|
*/
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
callback(sheet, sheet.id);
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
get definedNames() {
|
|
121
|
-
return this._definedNames;
|
|
122
|
-
}
|
|
123
|
-
clearThemes() {
|
|
124
|
-
// Note: themes are not an exposed feature, meddle at your peril!
|
|
125
|
-
this._themes = undefined;
|
|
58
|
+
static createStreamWriter(options) {
|
|
59
|
+
return new workbook_writer_1.WorkbookWriter(options);
|
|
126
60
|
}
|
|
127
61
|
/**
|
|
128
|
-
*
|
|
62
|
+
* Create a streaming workbook reader for large files.
|
|
63
|
+
* This is more memory-efficient than using Workbook.xlsx.readFile for large datasets.
|
|
64
|
+
*
|
|
65
|
+
* @param input - File path or readable stream
|
|
66
|
+
* @param options - Options for the workbook reader
|
|
67
|
+
* @returns A new WorkbookReader instance
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```ts
|
|
71
|
+
* const reader = Workbook.createStreamReader("large-file.xlsx");
|
|
72
|
+
* for await (const event of reader) {
|
|
73
|
+
* if (event.eventType === "worksheet") {
|
|
74
|
+
* const worksheet = event.value;
|
|
75
|
+
* for await (const row of worksheet) {
|
|
76
|
+
* console.log(row.values);
|
|
77
|
+
* }
|
|
78
|
+
* }
|
|
79
|
+
* }
|
|
80
|
+
* ```
|
|
129
81
|
*/
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
const id = this.media.length;
|
|
133
|
-
this.media.push({ ...image, type: "image" });
|
|
134
|
-
return id;
|
|
135
|
-
}
|
|
136
|
-
getImage(id) {
|
|
137
|
-
return this.media[Number(id)];
|
|
138
|
-
}
|
|
139
|
-
get model() {
|
|
140
|
-
return {
|
|
141
|
-
creator: this.creator || "Unknown",
|
|
142
|
-
lastModifiedBy: this.lastModifiedBy || "Unknown",
|
|
143
|
-
lastPrinted: this.lastPrinted,
|
|
144
|
-
created: this.created,
|
|
145
|
-
modified: this.modified,
|
|
146
|
-
properties: this.properties,
|
|
147
|
-
worksheets: this.worksheets.map(worksheet => worksheet.model),
|
|
148
|
-
sheets: this.worksheets.map(ws => ws.model).filter(Boolean),
|
|
149
|
-
definedNames: this._definedNames.model,
|
|
150
|
-
views: this.views,
|
|
151
|
-
company: this.company,
|
|
152
|
-
manager: this.manager,
|
|
153
|
-
title: this.title,
|
|
154
|
-
subject: this.subject,
|
|
155
|
-
keywords: this.keywords,
|
|
156
|
-
category: this.category,
|
|
157
|
-
description: this.description,
|
|
158
|
-
language: this.language,
|
|
159
|
-
revision: this.revision,
|
|
160
|
-
contentStatus: this.contentStatus,
|
|
161
|
-
themes: this._themes,
|
|
162
|
-
media: this.media,
|
|
163
|
-
pivotTables: this.pivotTables,
|
|
164
|
-
calcProperties: this.calcProperties
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
set model(value) {
|
|
168
|
-
this.creator = value.creator;
|
|
169
|
-
this.lastModifiedBy = value.lastModifiedBy;
|
|
170
|
-
this.lastPrinted = value.lastPrinted;
|
|
171
|
-
this.created = value.created;
|
|
172
|
-
this.modified = value.modified;
|
|
173
|
-
this.company = value.company;
|
|
174
|
-
this.manager = value.manager;
|
|
175
|
-
this.title = value.title;
|
|
176
|
-
this.subject = value.subject;
|
|
177
|
-
this.keywords = value.keywords;
|
|
178
|
-
this.category = value.category;
|
|
179
|
-
this.description = value.description;
|
|
180
|
-
this.language = value.language;
|
|
181
|
-
this.revision = value.revision;
|
|
182
|
-
this.contentStatus = value.contentStatus;
|
|
183
|
-
this.properties = value.properties;
|
|
184
|
-
this.calcProperties = value.calcProperties;
|
|
185
|
-
this._worksheets = [];
|
|
186
|
-
value.worksheets.forEach(worksheetModel => {
|
|
187
|
-
const { id, name, state } = worksheetModel;
|
|
188
|
-
const orderNo = value.sheets && value.sheets.findIndex(ws => ws.id === id);
|
|
189
|
-
const worksheet = (this._worksheets[id] = new worksheet_js_1.Worksheet({
|
|
190
|
-
id,
|
|
191
|
-
name,
|
|
192
|
-
orderNo: orderNo !== -1 ? orderNo : undefined,
|
|
193
|
-
state,
|
|
194
|
-
workbook: this
|
|
195
|
-
}));
|
|
196
|
-
worksheet.model = worksheetModel;
|
|
197
|
-
});
|
|
198
|
-
this._definedNames.model = value.definedNames;
|
|
199
|
-
this.views = value.views;
|
|
200
|
-
this._themes = value.themes;
|
|
201
|
-
this.media = value.media || [];
|
|
202
|
-
// Handle pivot tables - either newly created or loaded from file
|
|
203
|
-
// Loaded pivot tables come from loadedPivotTables after reconciliation
|
|
204
|
-
this.pivotTables = value.pivotTables || value.loadedPivotTables || [];
|
|
82
|
+
static createStreamReader(input, options) {
|
|
83
|
+
return new workbook_reader_1.WorkbookReader(input, options);
|
|
205
84
|
}
|
|
206
85
|
}
|
|
207
86
|
exports.Workbook = Workbook;
|
|
87
|
+
/**
|
|
88
|
+
* Streaming workbook writer class for large files.
|
|
89
|
+
* @example new Workbook.Writer({ filename: "large.xlsx" })
|
|
90
|
+
*/
|
|
91
|
+
Workbook.Writer = workbook_writer_1.WorkbookWriter;
|
|
92
|
+
/**
|
|
93
|
+
* Streaming workbook reader class for large files.
|
|
94
|
+
* @example new Workbook.Reader("large.xlsx")
|
|
95
|
+
*/
|
|
96
|
+
Workbook.Reader = workbook_reader_1.WorkbookReader;
|