@cj-tech-master/excelts 1.6.3 → 2.0.0-canary.20251228024848.8822305
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 +18529 -0
- package/dist/browser/excelts.esm.js.map +1 -0
- package/dist/browser/excelts.esm.min.js +128 -0
- package/dist/browser/excelts.iife.js +12966 -46944
- package/dist/browser/excelts.iife.js.map +1 -1
- package/dist/browser/excelts.iife.min.js +36 -115
- 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 +499 -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 +13 -11
- 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 +101 -17
- 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 +493 -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-cache-definition-xform.js +3 -1
- package/dist/esm/xlsx/xform/pivot-table/pivot-table-xform.js +93 -9
- 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 +201 -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 +5 -5
- package/dist/types/stream/xlsx/workbook-writer.d.ts +7 -7
- package/dist/types/stream/xlsx/worksheet-reader.d.ts +6 -6
- 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 +56 -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
|
@@ -5,20 +5,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.WorkbookWriter = void 0;
|
|
7
7
|
const fs_1 = __importDefault(require("fs"));
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
8
|
+
const streaming_zip_1 = require("../../utils/zip/streaming-zip");
|
|
9
|
+
const stream_buf_1 = require("../../utils/stream-buf");
|
|
10
|
+
const rel_type_1 = require("../../xlsx/rel-type");
|
|
11
|
+
const styles_xform_1 = require("../../xlsx/xform/style/styles-xform");
|
|
12
|
+
const shared_strings_1 = require("../../utils/shared-strings");
|
|
13
|
+
const defined_names_1 = require("../../doc/defined-names");
|
|
14
|
+
const core_xform_1 = require("../../xlsx/xform/core/core-xform");
|
|
15
|
+
const relationships_xform_1 = require("../../xlsx/xform/core/relationships-xform");
|
|
16
|
+
const content_types_xform_1 = require("../../xlsx/xform/core/content-types-xform");
|
|
17
|
+
const app_xform_1 = require("../../xlsx/xform/core/app-xform");
|
|
18
|
+
const workbook_xform_1 = require("../../xlsx/xform/book/workbook-xform");
|
|
19
|
+
const shared_strings_xform_1 = require("../../xlsx/xform/strings/shared-strings-xform");
|
|
20
|
+
const worksheet_writer_1 = require("./worksheet-writer");
|
|
21
|
+
const theme1_1 = require("../../xlsx/xml/theme1");
|
|
22
22
|
class WorkbookWriter {
|
|
23
23
|
constructor(options = {}) {
|
|
24
24
|
this.created = options.created || new Date();
|
|
@@ -28,11 +28,11 @@ class WorkbookWriter {
|
|
|
28
28
|
this.lastPrinted = options.lastPrinted;
|
|
29
29
|
// using shared strings creates a smaller xlsx file but may use more memory
|
|
30
30
|
this.useSharedStrings = options.useSharedStrings || false;
|
|
31
|
-
this.sharedStrings = new
|
|
31
|
+
this.sharedStrings = new shared_strings_1.SharedStrings();
|
|
32
32
|
// style manager
|
|
33
|
-
this.styles = options.useStyles ? new
|
|
33
|
+
this.styles = options.useStyles ? new styles_xform_1.StylesXform(true) : new styles_xform_1.StylesXform.Mock(true);
|
|
34
34
|
// defined names
|
|
35
|
-
this._definedNames = new
|
|
35
|
+
this._definedNames = new defined_names_1.DefinedNames();
|
|
36
36
|
this._worksheets = [];
|
|
37
37
|
this.views = [];
|
|
38
38
|
this.zipOptions = options.zip;
|
|
@@ -44,7 +44,7 @@ class WorkbookWriter {
|
|
|
44
44
|
this.media = [];
|
|
45
45
|
this.commentRefs = [];
|
|
46
46
|
// Create fflate Zip instance
|
|
47
|
-
this.zip = new
|
|
47
|
+
this.zip = new streaming_zip_1.Zip((err, data, final) => {
|
|
48
48
|
if (err) {
|
|
49
49
|
this.stream.emit("error", err);
|
|
50
50
|
}
|
|
@@ -62,7 +62,7 @@ class WorkbookWriter {
|
|
|
62
62
|
this.stream = fs_1.default.createWriteStream(options.filename);
|
|
63
63
|
}
|
|
64
64
|
else {
|
|
65
|
-
this.stream = new
|
|
65
|
+
this.stream = new stream_buf_1.StreamBuf();
|
|
66
66
|
}
|
|
67
67
|
// these bits can be added right now
|
|
68
68
|
this.promise = Promise.all([this.addThemes(), this.addOfficeRels()]);
|
|
@@ -71,9 +71,9 @@ class WorkbookWriter {
|
|
|
71
71
|
return this._definedNames;
|
|
72
72
|
}
|
|
73
73
|
_openStream(path) {
|
|
74
|
-
const stream = new
|
|
74
|
+
const stream = new stream_buf_1.StreamBuf({ bufSize: 65536, batch: true });
|
|
75
75
|
// Create a ZipDeflate for this file with compression
|
|
76
|
-
const zipFile = new
|
|
76
|
+
const zipFile = new streaming_zip_1.ZipDeflate(path, { level: this.compressionLevel });
|
|
77
77
|
this.zip.add(zipFile);
|
|
78
78
|
// Don't pause the stream - we need data events to flow
|
|
79
79
|
// The original implementation used archiver which consumed the stream internally
|
|
@@ -93,7 +93,7 @@ class WorkbookWriter {
|
|
|
93
93
|
}
|
|
94
94
|
_addFile(data, name, base64) {
|
|
95
95
|
// Helper method to add a file to the zip using fflate with compression
|
|
96
|
-
const zipFile = new
|
|
96
|
+
const zipFile = new streaming_zip_1.ZipDeflate(name, { level: this.compressionLevel });
|
|
97
97
|
this.zip.add(zipFile);
|
|
98
98
|
let buffer;
|
|
99
99
|
if (base64) {
|
|
@@ -191,7 +191,7 @@ class WorkbookWriter {
|
|
|
191
191
|
}
|
|
192
192
|
const id = this.nextId;
|
|
193
193
|
name = name || `sheet${id}`;
|
|
194
|
-
const worksheet = new
|
|
194
|
+
const worksheet = new worksheet_writer_1.WorksheetWriter({
|
|
195
195
|
id,
|
|
196
196
|
name,
|
|
197
197
|
workbook: this,
|
|
@@ -229,17 +229,17 @@ class WorkbookWriter {
|
|
|
229
229
|
}
|
|
230
230
|
addThemes() {
|
|
231
231
|
return new Promise(resolve => {
|
|
232
|
-
this._addFile(
|
|
232
|
+
this._addFile(theme1_1.theme1Xml, "xl/theme/theme1.xml");
|
|
233
233
|
resolve();
|
|
234
234
|
});
|
|
235
235
|
}
|
|
236
236
|
addOfficeRels() {
|
|
237
237
|
return new Promise(resolve => {
|
|
238
|
-
const xform = new
|
|
238
|
+
const xform = new relationships_xform_1.RelationshipsXform();
|
|
239
239
|
const xml = xform.toXml([
|
|
240
|
-
{ Id: "rId1", Type:
|
|
241
|
-
{ Id: "rId2", Type:
|
|
242
|
-
{ Id: "rId3", Type:
|
|
240
|
+
{ Id: "rId1", Type: rel_type_1.RelType.OfficeDocument, Target: "xl/workbook.xml" },
|
|
241
|
+
{ Id: "rId2", Type: rel_type_1.RelType.CoreProperties, Target: "docProps/core.xml" },
|
|
242
|
+
{ Id: "rId3", Type: rel_type_1.RelType.ExtenderProperties, Target: "docProps/app.xml" }
|
|
243
243
|
]);
|
|
244
244
|
this._addFile(xml, "_rels/.rels");
|
|
245
245
|
resolve();
|
|
@@ -253,7 +253,7 @@ class WorkbookWriter {
|
|
|
253
253
|
commentRefs: this.commentRefs,
|
|
254
254
|
media: this.media
|
|
255
255
|
};
|
|
256
|
-
const xform = new
|
|
256
|
+
const xform = new content_types_xform_1.ContentTypesXform();
|
|
257
257
|
const xml = xform.toXml(model);
|
|
258
258
|
this._addFile(xml, "[Content_Types].xml");
|
|
259
259
|
resolve();
|
|
@@ -296,7 +296,7 @@ class WorkbookWriter {
|
|
|
296
296
|
const model = {
|
|
297
297
|
worksheets: this._worksheets.filter(Boolean)
|
|
298
298
|
};
|
|
299
|
-
const xform = new
|
|
299
|
+
const xform = new app_xform_1.AppXform();
|
|
300
300
|
const xml = xform.toXml(model);
|
|
301
301
|
this._addFile(xml, "docProps/app.xml");
|
|
302
302
|
resolve();
|
|
@@ -304,7 +304,7 @@ class WorkbookWriter {
|
|
|
304
304
|
}
|
|
305
305
|
addCore() {
|
|
306
306
|
return new Promise(resolve => {
|
|
307
|
-
const coreXform = new
|
|
307
|
+
const coreXform = new core_xform_1.CoreXform();
|
|
308
308
|
const xml = coreXform.toXml(this);
|
|
309
309
|
this._addFile(xml, "docProps/core.xml");
|
|
310
310
|
resolve();
|
|
@@ -313,7 +313,7 @@ class WorkbookWriter {
|
|
|
313
313
|
addSharedStrings() {
|
|
314
314
|
if (this.sharedStrings.count) {
|
|
315
315
|
return new Promise(resolve => {
|
|
316
|
-
const sharedStringsXform = new
|
|
316
|
+
const sharedStringsXform = new shared_strings_xform_1.SharedStringsXform();
|
|
317
317
|
const xml = sharedStringsXform.toXml(this.sharedStrings);
|
|
318
318
|
this._addFile(xml, "xl/sharedStrings.xml");
|
|
319
319
|
resolve();
|
|
@@ -324,13 +324,13 @@ class WorkbookWriter {
|
|
|
324
324
|
addWorkbookRels() {
|
|
325
325
|
let count = 1;
|
|
326
326
|
const relationships = [
|
|
327
|
-
{ Id: `rId${count++}`, Type:
|
|
328
|
-
{ Id: `rId${count++}`, Type:
|
|
327
|
+
{ Id: `rId${count++}`, Type: rel_type_1.RelType.Styles, Target: "styles.xml" },
|
|
328
|
+
{ Id: `rId${count++}`, Type: rel_type_1.RelType.Theme, Target: "theme/theme1.xml" }
|
|
329
329
|
];
|
|
330
330
|
if (this.sharedStrings.count) {
|
|
331
331
|
relationships.push({
|
|
332
332
|
Id: `rId${count++}`,
|
|
333
|
-
Type:
|
|
333
|
+
Type: rel_type_1.RelType.SharedStrings,
|
|
334
334
|
Target: "sharedStrings.xml"
|
|
335
335
|
});
|
|
336
336
|
}
|
|
@@ -339,13 +339,13 @@ class WorkbookWriter {
|
|
|
339
339
|
worksheet.rId = `rId${count++}`;
|
|
340
340
|
relationships.push({
|
|
341
341
|
Id: worksheet.rId,
|
|
342
|
-
Type:
|
|
342
|
+
Type: rel_type_1.RelType.Worksheet,
|
|
343
343
|
Target: `worksheets/sheet${worksheet.id}.xml`
|
|
344
344
|
});
|
|
345
345
|
}
|
|
346
346
|
});
|
|
347
347
|
return new Promise(resolve => {
|
|
348
|
-
const xform = new
|
|
348
|
+
const xform = new relationships_xform_1.RelationshipsXform();
|
|
349
349
|
const xml = xform.toXml(relationships);
|
|
350
350
|
this._addFile(xml, "xl/_rels/workbook.xml.rels");
|
|
351
351
|
resolve();
|
|
@@ -360,7 +360,7 @@ class WorkbookWriter {
|
|
|
360
360
|
calcProperties: {}
|
|
361
361
|
};
|
|
362
362
|
return new Promise(resolve => {
|
|
363
|
-
const xform = new
|
|
363
|
+
const xform = new workbook_xform_1.WorkbookXform();
|
|
364
364
|
xform.prepare(model);
|
|
365
365
|
this._addFile(xform.toXml(model), "xl/workbook.xml");
|
|
366
366
|
resolve();
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WorksheetReader = void 0;
|
|
4
4
|
const events_1 = require("events");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
5
|
+
const parse_sax_1 = require("../../utils/parse-sax");
|
|
6
|
+
const utils_1 = require("../../utils/utils");
|
|
7
|
+
const col_cache_1 = require("../../utils/col-cache");
|
|
8
|
+
const range_1 = require("../../doc/range");
|
|
9
|
+
const row_1 = require("../../doc/row");
|
|
10
|
+
const column_1 = require("../../doc/column");
|
|
11
11
|
class WorksheetReader extends events_1.EventEmitter {
|
|
12
12
|
constructor({ workbook, id, iterator, options }) {
|
|
13
13
|
super();
|
|
@@ -21,7 +21,7 @@ class WorksheetReader extends events_1.EventEmitter {
|
|
|
21
21
|
this._columns = null;
|
|
22
22
|
this._keys = {};
|
|
23
23
|
// keep a record of dimensions
|
|
24
|
-
this._dimensions = new
|
|
24
|
+
this._dimensions = new range_1.Dimensions();
|
|
25
25
|
}
|
|
26
26
|
// destroy - not a valid operation for a streaming writer
|
|
27
27
|
// even though some streamers might be able to, it's a bad idea.
|
|
@@ -48,7 +48,7 @@ class WorksheetReader extends events_1.EventEmitter {
|
|
|
48
48
|
return col;
|
|
49
49
|
}
|
|
50
50
|
// otherwise, assume letter
|
|
51
|
-
c =
|
|
51
|
+
c = col_cache_1.colCache.l2n(c);
|
|
52
52
|
}
|
|
53
53
|
if (!this._columns) {
|
|
54
54
|
this._columns = [];
|
|
@@ -56,7 +56,7 @@ class WorksheetReader extends events_1.EventEmitter {
|
|
|
56
56
|
if (c > this._columns.length) {
|
|
57
57
|
let n = this._columns.length + 1;
|
|
58
58
|
while (n <= c) {
|
|
59
|
-
this._columns.push(new
|
|
59
|
+
this._columns.push(new column_1.Column(this, n++));
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
return this._columns[c - 1];
|
|
@@ -133,7 +133,7 @@ class WorksheetReader extends events_1.EventEmitter {
|
|
|
133
133
|
let row = null;
|
|
134
134
|
let c = null;
|
|
135
135
|
let current = null;
|
|
136
|
-
for await (const events of (0,
|
|
136
|
+
for await (const events of (0, parse_sax_1.parseSax)(iterator)) {
|
|
137
137
|
const worksheetEvents = [];
|
|
138
138
|
for (const { eventType, value } of events) {
|
|
139
139
|
if (eventType === "opentag") {
|
|
@@ -160,7 +160,7 @@ class WorksheetReader extends events_1.EventEmitter {
|
|
|
160
160
|
case "row":
|
|
161
161
|
if (inRows) {
|
|
162
162
|
const r = parseInt(node.attributes.r, 10);
|
|
163
|
-
row = new
|
|
163
|
+
row = new row_1.Row(this, r);
|
|
164
164
|
if (node.attributes.ht) {
|
|
165
165
|
row.height = parseFloat(node.attributes.ht);
|
|
166
166
|
}
|
|
@@ -244,7 +244,7 @@ class WorksheetReader extends events_1.EventEmitter {
|
|
|
244
244
|
switch (node.name) {
|
|
245
245
|
case "cols":
|
|
246
246
|
inCols = false;
|
|
247
|
-
this._columns =
|
|
247
|
+
this._columns = column_1.Column.fromModel(cols);
|
|
248
248
|
break;
|
|
249
249
|
case "sheetData":
|
|
250
250
|
inRows = false;
|
|
@@ -256,7 +256,7 @@ class WorksheetReader extends events_1.EventEmitter {
|
|
|
256
256
|
break;
|
|
257
257
|
case "c":
|
|
258
258
|
if (row && c) {
|
|
259
|
-
const address =
|
|
259
|
+
const address = col_cache_1.colCache.decodeAddress(c.ref);
|
|
260
260
|
const cell = row.getCell(address.col);
|
|
261
261
|
if (c.s) {
|
|
262
262
|
const style = styles.getStyleModel(c.s);
|
|
@@ -270,7 +270,7 @@ class WorksheetReader extends events_1.EventEmitter {
|
|
|
270
270
|
};
|
|
271
271
|
if (c.v) {
|
|
272
272
|
if (c.t === "str") {
|
|
273
|
-
cellValue.result = (0,
|
|
273
|
+
cellValue.result = (0, utils_1.xmlDecode)(c.v.text);
|
|
274
274
|
}
|
|
275
275
|
else {
|
|
276
276
|
cellValue.result = parseFloat(c.v.text);
|
|
@@ -295,7 +295,7 @@ class WorksheetReader extends events_1.EventEmitter {
|
|
|
295
295
|
}
|
|
296
296
|
case "inlineStr":
|
|
297
297
|
case "str":
|
|
298
|
-
cell.value = (0,
|
|
298
|
+
cell.value = (0, utils_1.xmlDecode)(c.v.text);
|
|
299
299
|
break;
|
|
300
300
|
case "e":
|
|
301
301
|
cell.value = { error: c.v.text };
|
|
@@ -305,8 +305,8 @@ class WorksheetReader extends events_1.EventEmitter {
|
|
|
305
305
|
break;
|
|
306
306
|
default: {
|
|
307
307
|
const numFmtStr = typeof cell.numFmt === "string" ? cell.numFmt : cell.numFmt?.formatCode;
|
|
308
|
-
if (numFmtStr && (0,
|
|
309
|
-
cell.value = (0,
|
|
308
|
+
if (numFmtStr && (0, utils_1.isDateFmt)(numFmtStr)) {
|
|
309
|
+
cell.value = (0, utils_1.excelToDate)(parseFloat(c.v.text), properties?.model?.date1904);
|
|
310
310
|
}
|
|
311
311
|
else {
|
|
312
312
|
cell.value = parseFloat(c.v.text);
|
|
@@ -1,60 +1,62 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WorksheetWriter = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const xmlBuffer = new
|
|
4
|
+
const rel_type_1 = require("../../xlsx/rel-type");
|
|
5
|
+
const col_cache_1 = require("../../utils/col-cache");
|
|
6
|
+
const encryptor_1 = require("../../utils/encryptor");
|
|
7
|
+
const range_1 = require("../../doc/range");
|
|
8
|
+
const string_buf_1 = require("../../utils/string-buf");
|
|
9
|
+
const row_1 = require("../../doc/row");
|
|
10
|
+
const column_1 = require("../../doc/column");
|
|
11
|
+
const sheet_rels_writer_1 = require("./sheet-rels-writer");
|
|
12
|
+
const sheet_comments_writer_1 = require("./sheet-comments-writer");
|
|
13
|
+
const data_validations_1 = require("../../doc/data-validations");
|
|
14
|
+
const xmlBuffer = new string_buf_1.StringBuf();
|
|
15
15
|
// ============================================================================================
|
|
16
16
|
// Xforms
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
const
|
|
29
|
-
const
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
-
const
|
|
17
|
+
const list_xform_1 = require("../../xlsx/xform/list-xform");
|
|
18
|
+
const data_validations_xform_1 = require("../../xlsx/xform/sheet/data-validations-xform");
|
|
19
|
+
const sheet_properties_xform_1 = require("../../xlsx/xform/sheet/sheet-properties-xform");
|
|
20
|
+
const sheet_format_properties_xform_1 = require("../../xlsx/xform/sheet/sheet-format-properties-xform");
|
|
21
|
+
const col_xform_1 = require("../../xlsx/xform/sheet/col-xform");
|
|
22
|
+
const row_xform_1 = require("../../xlsx/xform/sheet/row-xform");
|
|
23
|
+
const hyperlink_xform_1 = require("../../xlsx/xform/sheet/hyperlink-xform");
|
|
24
|
+
const sheet_view_xform_1 = require("../../xlsx/xform/sheet/sheet-view-xform");
|
|
25
|
+
const sheet_protection_xform_1 = require("../../xlsx/xform/sheet/sheet-protection-xform");
|
|
26
|
+
const page_margins_xform_1 = require("../../xlsx/xform/sheet/page-margins-xform");
|
|
27
|
+
const page_setup_xform_1 = require("../../xlsx/xform/sheet/page-setup-xform");
|
|
28
|
+
const auto_filter_xform_1 = require("../../xlsx/xform/sheet/auto-filter-xform");
|
|
29
|
+
const picture_xform_1 = require("../../xlsx/xform/sheet/picture-xform");
|
|
30
|
+
const conditional_formattings_xform_1 = require("../../xlsx/xform/sheet/cf/conditional-formattings-xform");
|
|
31
|
+
const header_footer_xform_1 = require("../../xlsx/xform/sheet/header-footer-xform");
|
|
32
|
+
const row_breaks_xform_1 = require("../../xlsx/xform/sheet/row-breaks-xform");
|
|
33
|
+
const col_breaks_xform_1 = require("../../xlsx/xform/sheet/col-breaks-xform");
|
|
33
34
|
// since prepare and render are functional, we can use singletons
|
|
34
35
|
const xform = {
|
|
35
|
-
dataValidations: new
|
|
36
|
-
sheetProperties: new
|
|
37
|
-
sheetFormatProperties: new
|
|
38
|
-
columns: new
|
|
39
|
-
row: new
|
|
40
|
-
hyperlinks: new
|
|
36
|
+
dataValidations: new data_validations_xform_1.DataValidationsXform(),
|
|
37
|
+
sheetProperties: new sheet_properties_xform_1.SheetPropertiesXform(),
|
|
38
|
+
sheetFormatProperties: new sheet_format_properties_xform_1.SheetFormatPropertiesXform(),
|
|
39
|
+
columns: new list_xform_1.ListXform({ tag: "cols", count: false, childXform: new col_xform_1.ColXform() }),
|
|
40
|
+
row: new row_xform_1.RowXform(),
|
|
41
|
+
hyperlinks: new list_xform_1.ListXform({
|
|
41
42
|
tag: "hyperlinks",
|
|
42
43
|
count: false,
|
|
43
|
-
childXform: new
|
|
44
|
+
childXform: new hyperlink_xform_1.HyperlinkXform()
|
|
44
45
|
}),
|
|
45
|
-
sheetViews: new
|
|
46
|
+
sheetViews: new list_xform_1.ListXform({
|
|
46
47
|
tag: "sheetViews",
|
|
47
48
|
count: false,
|
|
48
|
-
childXform: new
|
|
49
|
+
childXform: new sheet_view_xform_1.SheetViewXform()
|
|
49
50
|
}),
|
|
50
|
-
sheetProtection: new
|
|
51
|
-
pageMargins: new
|
|
52
|
-
pageSeteup: new
|
|
53
|
-
autoFilter: new
|
|
54
|
-
picture: new
|
|
55
|
-
conditionalFormattings: new
|
|
56
|
-
headerFooter: new
|
|
57
|
-
rowBreaks: new
|
|
51
|
+
sheetProtection: new sheet_protection_xform_1.SheetProtectionXform(),
|
|
52
|
+
pageMargins: new page_margins_xform_1.PageMarginsXform(),
|
|
53
|
+
pageSeteup: new page_setup_xform_1.PageSetupXform(),
|
|
54
|
+
autoFilter: new auto_filter_xform_1.AutoFilterXform(),
|
|
55
|
+
picture: new picture_xform_1.PictureXform(),
|
|
56
|
+
conditionalFormattings: new conditional_formattings_xform_1.ConditionalFormattingsXform(),
|
|
57
|
+
headerFooter: new header_footer_xform_1.HeaderFooterXform(),
|
|
58
|
+
rowBreaks: new row_breaks_xform_1.RowBreaksXform(),
|
|
59
|
+
colBreaks: new col_breaks_xform_1.ColBreaksXform()
|
|
58
60
|
};
|
|
59
61
|
class WorksheetWriter {
|
|
60
62
|
constructor(options) {
|
|
@@ -75,16 +77,16 @@ class WorksheetWriter {
|
|
|
75
77
|
this._merges = [];
|
|
76
78
|
this._merges.add = function () { }; // ignore cell instruction
|
|
77
79
|
// keep record of all hyperlinks
|
|
78
|
-
this._sheetRelsWriter = new
|
|
79
|
-
this._sheetCommentsWriter = new
|
|
80
|
+
this._sheetRelsWriter = new sheet_rels_writer_1.SheetRelsWriter(options);
|
|
81
|
+
this._sheetCommentsWriter = new sheet_comments_writer_1.SheetCommentsWriter(this, this._sheetRelsWriter, options);
|
|
80
82
|
// keep a record of dimensions
|
|
81
|
-
this._dimensions = new
|
|
83
|
+
this._dimensions = new range_1.Dimensions();
|
|
82
84
|
// first uncommitted row
|
|
83
85
|
this._rowZero = 1;
|
|
84
86
|
// committed flag
|
|
85
87
|
this.committed = false;
|
|
86
88
|
// for data validations
|
|
87
|
-
this.dataValidations = new
|
|
89
|
+
this.dataValidations = new data_validations_1.DataValidations();
|
|
88
90
|
// for sharing formulae
|
|
89
91
|
this._formulae = {};
|
|
90
92
|
this._siFormulae = 0;
|
|
@@ -92,6 +94,7 @@ class WorksheetWriter {
|
|
|
92
94
|
this.conditionalFormatting = [];
|
|
93
95
|
// keep a record of all row and column pageBreaks
|
|
94
96
|
this.rowBreaks = [];
|
|
97
|
+
this.colBreaks = [];
|
|
95
98
|
// for default row height, outline levels, etc
|
|
96
99
|
this.properties = Object.assign({}, {
|
|
97
100
|
defaultRowHeight: 15,
|
|
@@ -196,6 +199,7 @@ class WorksheetWriter {
|
|
|
196
199
|
this._writeBackground();
|
|
197
200
|
this._writeHeaderFooter();
|
|
198
201
|
this._writeRowBreaks();
|
|
202
|
+
this._writeColBreaks();
|
|
199
203
|
// Legacy Data tag for comments
|
|
200
204
|
this._writeLegacyData();
|
|
201
205
|
this._writeCloseWorksheet();
|
|
@@ -231,7 +235,7 @@ class WorksheetWriter {
|
|
|
231
235
|
let count = 1;
|
|
232
236
|
const columns = (this._columns = []);
|
|
233
237
|
value.forEach(defn => {
|
|
234
|
-
const column = new
|
|
238
|
+
const column = new column_1.Column(this, count++, false);
|
|
235
239
|
columns.push(column);
|
|
236
240
|
column.defn = defn;
|
|
237
241
|
});
|
|
@@ -258,7 +262,7 @@ class WorksheetWriter {
|
|
|
258
262
|
return col;
|
|
259
263
|
}
|
|
260
264
|
// otherwise, assume letter
|
|
261
|
-
c =
|
|
265
|
+
c = col_cache_1.colCache.l2n(c);
|
|
262
266
|
}
|
|
263
267
|
if (!this._columns) {
|
|
264
268
|
this._columns = [];
|
|
@@ -266,7 +270,7 @@ class WorksheetWriter {
|
|
|
266
270
|
if (c > this._columns.length) {
|
|
267
271
|
let n = this._columns.length + 1;
|
|
268
272
|
while (n <= c) {
|
|
269
|
-
this._columns.push(new
|
|
273
|
+
this._columns.push(new column_1.Column(this, n++));
|
|
270
274
|
}
|
|
271
275
|
}
|
|
272
276
|
return this._columns[c - 1];
|
|
@@ -335,12 +339,12 @@ class WorksheetWriter {
|
|
|
335
339
|
}
|
|
336
340
|
let row = this._rows[index];
|
|
337
341
|
if (!row) {
|
|
338
|
-
this._rows[index] = row = new
|
|
342
|
+
this._rows[index] = row = new row_1.Row(this, rowNumber);
|
|
339
343
|
}
|
|
340
344
|
return row;
|
|
341
345
|
}
|
|
342
346
|
addRow(value) {
|
|
343
|
-
const row = new
|
|
347
|
+
const row = new row_1.Row(this, this._nextRow);
|
|
344
348
|
this._rows[row.number - this._rowZero] = row;
|
|
345
349
|
row.values = value;
|
|
346
350
|
return row;
|
|
@@ -349,19 +353,19 @@ class WorksheetWriter {
|
|
|
349
353
|
// Cells
|
|
350
354
|
// returns the cell at [r,c] or address given by r. If not found, return undefined
|
|
351
355
|
findCell(r, c) {
|
|
352
|
-
const address =
|
|
356
|
+
const address = col_cache_1.colCache.getAddress(r, c);
|
|
353
357
|
const row = this.findRow(address.row);
|
|
354
358
|
return row ? row.findCell(address.column) : undefined;
|
|
355
359
|
}
|
|
356
360
|
// return the cell at [r,c] or address given by r. If not found, create a new one.
|
|
357
361
|
getCell(r, c) {
|
|
358
|
-
const address =
|
|
362
|
+
const address = col_cache_1.colCache.getAddress(r, c);
|
|
359
363
|
const row = this.getRow(address.row);
|
|
360
364
|
return row.getCellEx(address);
|
|
361
365
|
}
|
|
362
366
|
mergeCells(...cells) {
|
|
363
367
|
// may fail if rows have been comitted
|
|
364
|
-
const dimensions = new
|
|
368
|
+
const dimensions = new range_1.Dimensions(cells);
|
|
365
369
|
// check cells aren't already merged
|
|
366
370
|
this._merges.forEach(merge => {
|
|
367
371
|
if (merge.intersects(dimensions)) {
|
|
@@ -422,10 +426,10 @@ class WorksheetWriter {
|
|
|
422
426
|
}
|
|
423
427
|
if (password) {
|
|
424
428
|
this.sheetProtection.algorithmName = "SHA-512";
|
|
425
|
-
this.sheetProtection.saltValue =
|
|
429
|
+
this.sheetProtection.saltValue = encryptor_1.Encryptor.randomBytes(16).toString("base64");
|
|
426
430
|
this.sheetProtection.spinCount =
|
|
427
431
|
options && "spinCount" in options ? options.spinCount : 100000; // allow user specified spinCount
|
|
428
|
-
this.sheetProtection.hashValue =
|
|
432
|
+
this.sheetProtection.hashValue = encryptor_1.Encryptor.convertPasswordToHash(password, "SHA512", this.sheetProtection.saltValue, this.sheetProtection.spinCount);
|
|
429
433
|
}
|
|
430
434
|
if (options) {
|
|
431
435
|
this.sheetProtection = Object.assign(this.sheetProtection, options);
|
|
@@ -485,7 +489,7 @@ class WorksheetWriter {
|
|
|
485
489
|
this.stream.write(xmlBuffer);
|
|
486
490
|
}
|
|
487
491
|
_writeColumns() {
|
|
488
|
-
const cols =
|
|
492
|
+
const cols = column_1.Column.toModel(this.columns);
|
|
489
493
|
if (cols) {
|
|
490
494
|
xform.columns.prepare(cols, { styles: this._workbook.styles });
|
|
491
495
|
this.stream.write(xform.columns.toXml(cols));
|
|
@@ -546,6 +550,9 @@ class WorksheetWriter {
|
|
|
546
550
|
_writeRowBreaks() {
|
|
547
551
|
this.stream.write(xform.rowBreaks.toXml(this.rowBreaks));
|
|
548
552
|
}
|
|
553
|
+
_writeColBreaks() {
|
|
554
|
+
this.stream.write(xform.colBreaks.toXml(this.colBreaks));
|
|
555
|
+
}
|
|
549
556
|
_writeDataValidations() {
|
|
550
557
|
this.stream.write(xform.dataValidations.toXml(this.dataValidations.model));
|
|
551
558
|
}
|
|
@@ -570,7 +577,7 @@ class WorksheetWriter {
|
|
|
570
577
|
const image = this._workbook.getImage(this._background.imageId);
|
|
571
578
|
const pictureId = this._sheetRelsWriter.addMedia({
|
|
572
579
|
Target: `../media/${image.name}`,
|
|
573
|
-
Type:
|
|
580
|
+
Type: rel_type_1.RelType.Image
|
|
574
581
|
});
|
|
575
582
|
this._background = {
|
|
576
583
|
...this._background,
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Browser-compatible Buffer utilities
|
|
4
|
+
* Provides base64 encoding/decoding and a Buffer-like wrapper for Uint8Array
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.BrowserBuffer = void 0;
|
|
8
|
+
exports.uint8ArrayToBase64 = uint8ArrayToBase64;
|
|
9
|
+
exports.base64ToUint8Array = base64ToUint8Array;
|
|
10
|
+
exports.stringToUtf16Le = stringToUtf16Le;
|
|
11
|
+
exports.concatUint8Arrays = concatUint8Arrays;
|
|
12
|
+
/**
|
|
13
|
+
* Convert Uint8Array to base64 string
|
|
14
|
+
*/
|
|
15
|
+
function uint8ArrayToBase64(bytes) {
|
|
16
|
+
let binary = "";
|
|
17
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
18
|
+
binary += String.fromCharCode(bytes[i]);
|
|
19
|
+
}
|
|
20
|
+
return btoa(binary);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Convert base64 string to Uint8Array
|
|
24
|
+
*/
|
|
25
|
+
function base64ToUint8Array(base64) {
|
|
26
|
+
const binaryString = atob(base64);
|
|
27
|
+
const bytes = new Uint8Array(binaryString.length);
|
|
28
|
+
for (let i = 0; i < binaryString.length; i++) {
|
|
29
|
+
bytes[i] = binaryString.charCodeAt(i);
|
|
30
|
+
}
|
|
31
|
+
return bytes;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Buffer-like wrapper for Uint8Array with toString("base64") support
|
|
35
|
+
* This provides Node.js Buffer-like API for browser environments
|
|
36
|
+
*/
|
|
37
|
+
class BrowserBuffer extends Uint8Array {
|
|
38
|
+
toString(encoding) {
|
|
39
|
+
if (encoding === "base64") {
|
|
40
|
+
return uint8ArrayToBase64(this);
|
|
41
|
+
}
|
|
42
|
+
return new TextDecoder().decode(this);
|
|
43
|
+
}
|
|
44
|
+
static from(data) {
|
|
45
|
+
const buffer = new BrowserBuffer(data.length);
|
|
46
|
+
buffer.set(data);
|
|
47
|
+
return buffer;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.BrowserBuffer = BrowserBuffer;
|
|
51
|
+
/**
|
|
52
|
+
* Convert string to UTF-16LE Uint8Array (used for Excel password hashing)
|
|
53
|
+
*/
|
|
54
|
+
function stringToUtf16Le(str) {
|
|
55
|
+
const bytes = new Uint8Array(str.length * 2);
|
|
56
|
+
for (let i = 0; i < str.length; i++) {
|
|
57
|
+
const code = str.charCodeAt(i);
|
|
58
|
+
bytes[i * 2] = code & 0xff;
|
|
59
|
+
bytes[i * 2 + 1] = (code >> 8) & 0xff;
|
|
60
|
+
}
|
|
61
|
+
return bytes;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Concatenate multiple Uint8Arrays into one
|
|
65
|
+
*/
|
|
66
|
+
function concatUint8Arrays(...arrays) {
|
|
67
|
+
const totalLength = arrays.reduce((acc, arr) => acc + arr.length, 0);
|
|
68
|
+
const result = new Uint8Array(totalLength);
|
|
69
|
+
let offset = 0;
|
|
70
|
+
for (const arr of arrays) {
|
|
71
|
+
result.set(arr, offset);
|
|
72
|
+
offset += arr.length;
|
|
73
|
+
}
|
|
74
|
+
return result;
|
|
75
|
+
}
|
|
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
10
10
|
exports.cellFormat = void 0;
|
|
11
11
|
exports.getFormat = getFormat;
|
|
12
12
|
exports.format = format;
|
|
13
|
-
const
|
|
13
|
+
const utils_1 = require("./utils");
|
|
14
14
|
// =============================================================================
|
|
15
15
|
// Built-in Format Table (Excel numFmtId to format string mapping)
|
|
16
16
|
// =============================================================================
|
|
@@ -228,7 +228,7 @@ function formatDate(serial, fmt) {
|
|
|
228
228
|
const minutes = Math.floor((timeOfDay % 3600) / 60);
|
|
229
229
|
const seconds = timeOfDay % 60;
|
|
230
230
|
// For date components, use excelToDate but only for date parts
|
|
231
|
-
const date = (0,
|
|
231
|
+
const date = (0, utils_1.excelToDate)(serial, false);
|
|
232
232
|
const year = date.getUTCFullYear();
|
|
233
233
|
const month = date.getUTCMonth(); // 0-indexed
|
|
234
234
|
const day = date.getUTCDate();
|