@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,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CSV Base class - Shared functionality for Node.js and Browser
|
|
4
|
+
*
|
|
5
|
+
* Uses native CSV parser (RFC 4180 compliant) with zero external dependencies.
|
|
6
|
+
* Date parsing uses native high-performance datetime utilities.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.parseCsvStream = exports.formatCsv = exports.parseCsv = void 0;
|
|
10
|
+
exports.createDefaultValueMapper = createDefaultValueMapper;
|
|
11
|
+
exports.createDefaultWriteMapper = createDefaultWriteMapper;
|
|
12
|
+
exports.parseCsvToWorksheet = parseCsvToWorksheet;
|
|
13
|
+
exports.formatWorksheetToCsv = formatWorksheetToCsv;
|
|
14
|
+
const datetime_1 = require("../utils/datetime");
|
|
15
|
+
const csv_core_1 = require("./csv-core");
|
|
16
|
+
// Special Excel values mapping
|
|
17
|
+
const SpecialValues = {
|
|
18
|
+
true: true,
|
|
19
|
+
false: false,
|
|
20
|
+
"#N/A": { error: "#N/A" },
|
|
21
|
+
"#REF!": { error: "#REF!" },
|
|
22
|
+
"#NAME?": { error: "#NAME?" },
|
|
23
|
+
"#DIV/0!": { error: "#DIV/0!" },
|
|
24
|
+
"#NULL!": { error: "#NULL!" },
|
|
25
|
+
"#VALUE!": { error: "#VALUE!" },
|
|
26
|
+
"#NUM!": { error: "#NUM!" }
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Create the default value mapper for CSV parsing
|
|
30
|
+
*/
|
|
31
|
+
function createDefaultValueMapper(dateFormats) {
|
|
32
|
+
const dateParser = datetime_1.DateParser.create(dateFormats);
|
|
33
|
+
return function mapValue(datum) {
|
|
34
|
+
if (datum === "") {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
// Try to parse as number
|
|
38
|
+
const datumNumber = Number(datum);
|
|
39
|
+
if (!Number.isNaN(datumNumber) && datumNumber !== Infinity) {
|
|
40
|
+
return datumNumber;
|
|
41
|
+
}
|
|
42
|
+
// Try to parse as date
|
|
43
|
+
const date = dateParser.parse(datum);
|
|
44
|
+
if (date) {
|
|
45
|
+
return date;
|
|
46
|
+
}
|
|
47
|
+
// Check for special values
|
|
48
|
+
const special = SpecialValues[datum];
|
|
49
|
+
if (special !== undefined) {
|
|
50
|
+
return special;
|
|
51
|
+
}
|
|
52
|
+
return datum;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Create the default value mapper for CSV writing
|
|
57
|
+
*/
|
|
58
|
+
function createDefaultWriteMapper(dateFormat, dateUTC) {
|
|
59
|
+
const formatter = dateFormat
|
|
60
|
+
? datetime_1.DateFormatter.create(dateFormat, { utc: dateUTC })
|
|
61
|
+
: datetime_1.DateFormatter.iso(dateUTC);
|
|
62
|
+
return function mapValue(value) {
|
|
63
|
+
if (value) {
|
|
64
|
+
// Handle hyperlinks
|
|
65
|
+
if (value.text || value.hyperlink) {
|
|
66
|
+
return value.hyperlink || value.text || "";
|
|
67
|
+
}
|
|
68
|
+
// Handle formulas
|
|
69
|
+
if (value.formula || value.result) {
|
|
70
|
+
return value.result || "";
|
|
71
|
+
}
|
|
72
|
+
// Handle dates
|
|
73
|
+
if (value instanceof Date) {
|
|
74
|
+
return formatter.format(value);
|
|
75
|
+
}
|
|
76
|
+
// Handle errors
|
|
77
|
+
if (value.error) {
|
|
78
|
+
return value.error;
|
|
79
|
+
}
|
|
80
|
+
// Handle other objects
|
|
81
|
+
if (typeof value === "object") {
|
|
82
|
+
return JSON.stringify(value);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return value;
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Parse CSV content into a worksheet
|
|
90
|
+
*/
|
|
91
|
+
function parseCsvToWorksheet(content, workbook, options = {}) {
|
|
92
|
+
const worksheet = workbook.addWorksheet(options.sheetName);
|
|
93
|
+
const dateFormats = options.dateFormats || [
|
|
94
|
+
"YYYY-MM-DD[T]HH:mm:ssZ",
|
|
95
|
+
"YYYY-MM-DD[T]HH:mm:ss",
|
|
96
|
+
"YYYY-MM-DD"
|
|
97
|
+
];
|
|
98
|
+
const map = options.map || createDefaultValueMapper(dateFormats);
|
|
99
|
+
// Parse CSV
|
|
100
|
+
const rows = (0, csv_core_1.parseCsv)(content, options.parserOptions);
|
|
101
|
+
// Add rows to worksheet
|
|
102
|
+
for (const row of rows) {
|
|
103
|
+
worksheet.addRow(row.map(map));
|
|
104
|
+
}
|
|
105
|
+
return worksheet;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Format worksheet as CSV string
|
|
109
|
+
*/
|
|
110
|
+
function formatWorksheetToCsv(worksheet, options = {}) {
|
|
111
|
+
if (!worksheet) {
|
|
112
|
+
return "";
|
|
113
|
+
}
|
|
114
|
+
const { dateFormat, dateUTC } = options;
|
|
115
|
+
const map = options.map || createDefaultWriteMapper(dateFormat, dateUTC);
|
|
116
|
+
const includeEmptyRows = options.includeEmptyRows !== false;
|
|
117
|
+
const rows = [];
|
|
118
|
+
let lastRow = 1;
|
|
119
|
+
worksheet.eachRow((row, rowNumber) => {
|
|
120
|
+
// Add empty rows if needed
|
|
121
|
+
if (includeEmptyRows) {
|
|
122
|
+
while (lastRow++ < rowNumber - 1) {
|
|
123
|
+
rows.push([]);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
const { values } = row;
|
|
127
|
+
values.shift(); // Remove first empty element (1-indexed)
|
|
128
|
+
rows.push(values.map(map));
|
|
129
|
+
lastRow = rowNumber;
|
|
130
|
+
});
|
|
131
|
+
return (0, csv_core_1.formatCsv)(rows, options.formatterOptions);
|
|
132
|
+
}
|
|
133
|
+
// Re-export core types
|
|
134
|
+
var csv_core_2 = require("./csv-core");
|
|
135
|
+
Object.defineProperty(exports, "parseCsv", { enumerable: true, get: function () { return csv_core_2.parseCsv; } });
|
|
136
|
+
Object.defineProperty(exports, "formatCsv", { enumerable: true, get: function () { return csv_core_2.formatCsv; } });
|
|
137
|
+
Object.defineProperty(exports, "parseCsvStream", { enumerable: true, get: function () { return csv_core_2.parseCsvStream; } });
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CSV class for Browser - No file system dependencies
|
|
4
|
+
*
|
|
5
|
+
* Provides:
|
|
6
|
+
* - load: Load from string or ArrayBuffer
|
|
7
|
+
* - writeString: Write to string
|
|
8
|
+
* - writeBuffer: Write to Uint8Array
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.CSV = void 0;
|
|
12
|
+
const csv_base_1 = require("./csv.base");
|
|
13
|
+
class CSV {
|
|
14
|
+
constructor(workbook) {
|
|
15
|
+
this.workbook = workbook;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Load CSV from string or ArrayBuffer
|
|
19
|
+
*/
|
|
20
|
+
load(data, options) {
|
|
21
|
+
let content;
|
|
22
|
+
if (typeof data === "string") {
|
|
23
|
+
content = data;
|
|
24
|
+
}
|
|
25
|
+
else if (data instanceof ArrayBuffer) {
|
|
26
|
+
content = new TextDecoder("utf-8").decode(data);
|
|
27
|
+
}
|
|
28
|
+
else if (data instanceof Uint8Array) {
|
|
29
|
+
content = new TextDecoder("utf-8").decode(data);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
throw new Error("Invalid data type. Expected string, ArrayBuffer, or Uint8Array.");
|
|
33
|
+
}
|
|
34
|
+
return (0, csv_base_1.parseCsvToWorksheet)(content, this.workbook, options);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Write CSV to string
|
|
38
|
+
*/
|
|
39
|
+
writeString(options) {
|
|
40
|
+
const worksheet = this.workbook.getWorksheet(options?.sheetName || options?.sheetId);
|
|
41
|
+
return (0, csv_base_1.formatWorksheetToCsv)(worksheet, options);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Write CSV to Uint8Array buffer
|
|
45
|
+
*/
|
|
46
|
+
writeBuffer(options) {
|
|
47
|
+
const content = this.writeString(options);
|
|
48
|
+
return new TextEncoder().encode(content);
|
|
49
|
+
}
|
|
50
|
+
// Stubs for unsupported methods - throw helpful errors
|
|
51
|
+
async readFile(_filename, _options) {
|
|
52
|
+
throw new Error("CSV.readFile() is not available in browser. " +
|
|
53
|
+
"Use CSV.load() with string or ArrayBuffer instead.");
|
|
54
|
+
}
|
|
55
|
+
async read(_stream, _options) {
|
|
56
|
+
throw new Error("CSV.read() stream is not available in browser. " +
|
|
57
|
+
"Use CSV.load() with string or ArrayBuffer instead.");
|
|
58
|
+
}
|
|
59
|
+
async writeFile(_filename, _options) {
|
|
60
|
+
throw new Error("CSV.writeFile() is not available in browser. " +
|
|
61
|
+
"Use CSV.writeString() or CSV.writeBuffer() and handle download manually.");
|
|
62
|
+
}
|
|
63
|
+
write(_stream, _options) {
|
|
64
|
+
throw new Error("CSV.write() stream is not available in browser. " +
|
|
65
|
+
"Use CSV.writeString() or CSV.writeBuffer() instead.");
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.CSV = CSV;
|
package/dist/cjs/csv/csv.js
CHANGED
|
@@ -1,193 +1,249 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CSV class for Node.js - Full streaming and file system support
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - readFile: Read from file path (streaming)
|
|
7
|
+
* - writeFile: Write to file path (streaming)
|
|
8
|
+
* - read: Read from Node.js stream
|
|
9
|
+
* - write: Write to Node.js stream
|
|
10
|
+
* - createReadStream: Create a readable stream from worksheet
|
|
11
|
+
* - createWriteStream: Create a writable stream that writes to worksheet
|
|
12
|
+
*/
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
30
|
+
var ownKeys = function(o) {
|
|
31
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
32
|
+
var ar = [];
|
|
33
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
34
|
+
return ar;
|
|
35
|
+
};
|
|
36
|
+
return ownKeys(o);
|
|
37
|
+
};
|
|
38
|
+
return function (mod) {
|
|
39
|
+
if (mod && mod.__esModule) return mod;
|
|
40
|
+
var result = {};
|
|
41
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
42
|
+
__setModuleDefault(result, mod);
|
|
43
|
+
return result;
|
|
44
|
+
};
|
|
45
|
+
})();
|
|
2
46
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
47
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
48
|
};
|
|
5
49
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.CSV = void 0;
|
|
50
|
+
exports.CsvFormatterStream = exports.CsvParserStream = exports.CSV = void 0;
|
|
7
51
|
const fs_1 = __importDefault(require("fs"));
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const utc_js_1 = __importDefault(require("dayjs/plugin/utc"));
|
|
12
|
-
const dayjs_1 = __importDefault(require("dayjs"));
|
|
13
|
-
const utils_js_1 = require("../utils/utils");
|
|
14
|
-
const SpecialValues = {
|
|
15
|
-
true: true,
|
|
16
|
-
false: false,
|
|
17
|
-
"#N/A": { error: "#N/A" },
|
|
18
|
-
"#REF!": { error: "#REF!" },
|
|
19
|
-
"#NAME?": { error: "#NAME?" },
|
|
20
|
-
"#DIV/0!": { error: "#DIV/0!" },
|
|
21
|
-
"#NULL!": { error: "#NULL!" },
|
|
22
|
-
"#VALUE!": { error: "#VALUE!" },
|
|
23
|
-
"#NUM!": { error: "#NUM!" }
|
|
24
|
-
};
|
|
25
|
-
dayjs_1.default.extend(customParseFormat_js_1.default);
|
|
26
|
-
dayjs_1.default.extend(utc_js_1.default);
|
|
52
|
+
const utils_1 = require("../utils/utils");
|
|
53
|
+
const csv_base_1 = require("./csv.base");
|
|
54
|
+
const csv_stream_1 = require("./csv-stream");
|
|
27
55
|
class CSV {
|
|
28
56
|
constructor(workbook) {
|
|
29
57
|
this.workbook = workbook;
|
|
30
|
-
this.worksheet = null;
|
|
31
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Read CSV from file using streaming
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```ts
|
|
64
|
+
* const worksheet = await workbook.csv.readFile('data.csv');
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
32
67
|
async readFile(filename, options) {
|
|
33
|
-
|
|
34
|
-
if (!(await (0, utils_js_1.fileExists)(filename))) {
|
|
68
|
+
if (!(await (0, utils_1.fileExists)(filename))) {
|
|
35
69
|
throw new Error(`File not found: ${filename}`);
|
|
36
70
|
}
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
catch (error) {
|
|
44
|
-
stream.close();
|
|
45
|
-
throw error;
|
|
46
|
-
}
|
|
71
|
+
const readStream = fs_1.default.createReadStream(filename, {
|
|
72
|
+
encoding: "utf8",
|
|
73
|
+
highWaterMark: options?.highWaterMark ?? 64 * 1024
|
|
74
|
+
});
|
|
75
|
+
return this.read(readStream, options);
|
|
47
76
|
}
|
|
48
|
-
|
|
49
|
-
|
|
77
|
+
/**
|
|
78
|
+
* Read CSV from Node.js readable stream
|
|
79
|
+
*
|
|
80
|
+
* Uses true streaming - processes data row by row without loading entire file into memory.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```ts
|
|
84
|
+
* const stream = fs.createReadStream('data.csv');
|
|
85
|
+
* const worksheet = await workbook.csv.read(stream);
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
async read(stream, options) {
|
|
89
|
+
const worksheet = this.workbook.addWorksheet(options?.sheetName);
|
|
90
|
+
const dateFormats = options?.dateFormats ??
|
|
91
|
+
["YYYY-MM-DD[T]HH:mm:ssZ", "YYYY-MM-DD[T]HH:mm:ss", "MM-DD-YYYY", "YYYY-MM-DD"];
|
|
92
|
+
const map = options?.map || (0, csv_base_1.createDefaultValueMapper)(dateFormats);
|
|
93
|
+
const parser = new csv_stream_1.CsvParserStream(options?.parserOptions);
|
|
50
94
|
return new Promise((resolve, reject) => {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
if (datum === "") {
|
|
61
|
-
return null;
|
|
62
|
-
}
|
|
63
|
-
const datumNumber = Number(datum);
|
|
64
|
-
if (!Number.isNaN(datumNumber) && datumNumber !== Infinity) {
|
|
65
|
-
return datumNumber;
|
|
66
|
-
}
|
|
67
|
-
const dt = dateFormats.reduce((matchingDate, currentDateFormat) => {
|
|
68
|
-
if (matchingDate) {
|
|
69
|
-
return matchingDate;
|
|
70
|
-
}
|
|
71
|
-
const dayjsObj = (0, dayjs_1.default)(datum, currentDateFormat, true);
|
|
72
|
-
if (dayjsObj.isValid()) {
|
|
73
|
-
return dayjsObj;
|
|
74
|
-
}
|
|
75
|
-
return null;
|
|
76
|
-
}, null);
|
|
77
|
-
if (dt) {
|
|
78
|
-
return new Date(dt.valueOf());
|
|
79
|
-
}
|
|
80
|
-
const special = SpecialValues[datum];
|
|
81
|
-
if (special !== undefined) {
|
|
82
|
-
return special;
|
|
83
|
-
}
|
|
84
|
-
return datum;
|
|
85
|
-
};
|
|
86
|
-
const onData = (data) => {
|
|
87
|
-
worksheet.addRow(data.map(map));
|
|
88
|
-
};
|
|
89
|
-
const onEnd = () => {
|
|
90
|
-
csvStream.emit("worksheet", worksheet);
|
|
91
|
-
};
|
|
92
|
-
const cleanup = () => {
|
|
93
|
-
csvStream.removeListener("data", onData);
|
|
94
|
-
csvStream.removeListener("end", onEnd);
|
|
95
|
-
csvStream.removeListener("worksheet", onWorksheet);
|
|
96
|
-
csvStream.removeListener("error", onError);
|
|
97
|
-
};
|
|
98
|
-
const onWorksheet = (ws) => {
|
|
99
|
-
cleanup();
|
|
100
|
-
resolve(ws);
|
|
101
|
-
};
|
|
102
|
-
const onError = (err) => {
|
|
103
|
-
cleanup();
|
|
104
|
-
reject(err);
|
|
105
|
-
};
|
|
106
|
-
const csvStream = (0, fast_csv_1.parse)(options.parserOptions).on("data", onData).on("end", onEnd);
|
|
107
|
-
csvStream.once("worksheet", onWorksheet).on("error", onError);
|
|
108
|
-
stream.pipe(csvStream);
|
|
95
|
+
stream.pipe(parser);
|
|
96
|
+
parser.on("data", (row) => {
|
|
97
|
+
worksheet.addRow(row.map(map));
|
|
98
|
+
});
|
|
99
|
+
parser.on("end", () => {
|
|
100
|
+
resolve(worksheet);
|
|
101
|
+
});
|
|
102
|
+
parser.on("error", reject);
|
|
103
|
+
stream.on("error", reject);
|
|
109
104
|
});
|
|
110
105
|
}
|
|
111
|
-
|
|
106
|
+
/**
|
|
107
|
+
* Write CSV to file using streaming
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```ts
|
|
111
|
+
* await workbook.csv.writeFile('output.csv');
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
async writeFile(filename, options) {
|
|
115
|
+
const writeStream = fs_1.default.createWriteStream(filename, {
|
|
116
|
+
encoding: (options?.encoding || "utf8"),
|
|
117
|
+
highWaterMark: options?.highWaterMark ?? 64 * 1024
|
|
118
|
+
});
|
|
119
|
+
return this.write(writeStream, options);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Write CSV to Node.js writable stream
|
|
123
|
+
*
|
|
124
|
+
* Uses true streaming - writes data row by row.
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* ```ts
|
|
128
|
+
* const stream = fs.createWriteStream('output.csv');
|
|
129
|
+
* await workbook.csv.write(stream);
|
|
130
|
+
* ```
|
|
131
|
+
*/
|
|
132
|
+
async write(stream, options) {
|
|
133
|
+
const worksheet = this.workbook.getWorksheet(options?.sheetName || options?.sheetId);
|
|
134
|
+
if (!worksheet) {
|
|
135
|
+
stream.end();
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
const { dateFormat, dateUTC } = options || {};
|
|
139
|
+
const map = options?.map || (0, csv_base_1.createDefaultWriteMapper)(dateFormat, dateUTC);
|
|
140
|
+
const includeEmptyRows = options?.includeEmptyRows !== false;
|
|
141
|
+
const formatterOptions = {
|
|
142
|
+
...options?.formatterOptions
|
|
143
|
+
};
|
|
144
|
+
const formatter = new csv_stream_1.CsvFormatterStream(formatterOptions);
|
|
145
|
+
formatter.pipe(stream);
|
|
146
|
+
let lastRow = 1;
|
|
147
|
+
worksheet.eachRow((row, rowNumber) => {
|
|
148
|
+
// Add empty rows if needed
|
|
149
|
+
if (includeEmptyRows) {
|
|
150
|
+
while (lastRow++ < rowNumber - 1) {
|
|
151
|
+
formatter.write([]);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
const { values } = row;
|
|
155
|
+
values.shift(); // Remove first empty element (1-indexed)
|
|
156
|
+
formatter.write(values.map(map));
|
|
157
|
+
lastRow = rowNumber;
|
|
158
|
+
});
|
|
112
159
|
return new Promise((resolve, reject) => {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
}
|
|
159
|
-
return value;
|
|
160
|
-
});
|
|
161
|
-
const includeEmptyRows = options.includeEmptyRows === undefined || options.includeEmptyRows;
|
|
162
|
-
let lastRow = 1;
|
|
163
|
-
if (worksheet) {
|
|
160
|
+
formatter.on("error", reject);
|
|
161
|
+
stream.on("error", reject);
|
|
162
|
+
stream.on("finish", () => resolve());
|
|
163
|
+
formatter.end();
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Write CSV to buffer
|
|
168
|
+
*
|
|
169
|
+
* Note: This loads the entire CSV into memory. For large files, use write() with a stream.
|
|
170
|
+
*/
|
|
171
|
+
async writeBuffer(options) {
|
|
172
|
+
const chunks = [];
|
|
173
|
+
const { Writable } = await Promise.resolve().then(() => __importStar(require("stream")));
|
|
174
|
+
const bufferStream = new Writable({
|
|
175
|
+
write(chunk, encoding, callback) {
|
|
176
|
+
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk, encoding));
|
|
177
|
+
callback();
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
await this.write(bufferStream, options);
|
|
181
|
+
return Buffer.concat(chunks);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Create a readable stream that outputs CSV rows from the worksheet
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```ts
|
|
188
|
+
* const csvStream = workbook.csv.createReadStream();
|
|
189
|
+
* csvStream.pipe(fs.createWriteStream('output.csv'));
|
|
190
|
+
* ```
|
|
191
|
+
*/
|
|
192
|
+
createReadStream(options) {
|
|
193
|
+
const worksheet = this.workbook.getWorksheet(options?.sheetName || options?.sheetId);
|
|
194
|
+
const { dateFormat, dateUTC } = options || {};
|
|
195
|
+
const map = options?.map || (0, csv_base_1.createDefaultWriteMapper)(dateFormat, dateUTC);
|
|
196
|
+
const includeEmptyRows = options?.includeEmptyRows !== false;
|
|
197
|
+
const formatterOptions = {
|
|
198
|
+
...options?.formatterOptions
|
|
199
|
+
};
|
|
200
|
+
const formatter = new csv_stream_1.CsvFormatterStream(formatterOptions);
|
|
201
|
+
if (worksheet) {
|
|
202
|
+
// Use setImmediate to allow piping before data flows
|
|
203
|
+
setImmediate(() => {
|
|
204
|
+
let lastRow = 1;
|
|
164
205
|
worksheet.eachRow((row, rowNumber) => {
|
|
165
206
|
if (includeEmptyRows) {
|
|
166
207
|
while (lastRow++ < rowNumber - 1) {
|
|
167
|
-
|
|
208
|
+
formatter.write([]);
|
|
168
209
|
}
|
|
169
210
|
}
|
|
170
211
|
const { values } = row;
|
|
171
212
|
values.shift();
|
|
172
|
-
|
|
213
|
+
formatter.write(values.map(map));
|
|
173
214
|
lastRow = rowNumber;
|
|
174
215
|
});
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
encoding: (options.encoding || "utf8")
|
|
183
|
-
};
|
|
184
|
-
const stream = fs_1.default.createWriteStream(filename, streamOptions);
|
|
185
|
-
return this.write(stream, options);
|
|
216
|
+
formatter.end();
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
setImmediate(() => formatter.end());
|
|
221
|
+
}
|
|
222
|
+
return formatter;
|
|
186
223
|
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
224
|
+
/**
|
|
225
|
+
* Create a writable stream that parses CSV and adds rows to a worksheet
|
|
226
|
+
*
|
|
227
|
+
* @example
|
|
228
|
+
* ```ts
|
|
229
|
+
* const csvWriter = workbook.csv.createWriteStream({ sheetName: 'Data' });
|
|
230
|
+
* fs.createReadStream('input.csv').pipe(csvWriter);
|
|
231
|
+
* await new Promise(resolve => csvWriter.on('finish', resolve));
|
|
232
|
+
* ```
|
|
233
|
+
*/
|
|
234
|
+
createWriteStream(options) {
|
|
235
|
+
const worksheet = this.workbook.addWorksheet(options?.sheetName);
|
|
236
|
+
const dateFormats = options?.dateFormats ??
|
|
237
|
+
["YYYY-MM-DD[T]HH:mm:ssZ", "YYYY-MM-DD[T]HH:mm:ss", "MM-DD-YYYY", "YYYY-MM-DD"];
|
|
238
|
+
const map = options?.map || (0, csv_base_1.createDefaultValueMapper)(dateFormats);
|
|
239
|
+
const parser = new csv_stream_1.CsvParserStream(options?.parserOptions);
|
|
240
|
+
parser.on("data", (row) => {
|
|
241
|
+
worksheet.addRow(row.map(map));
|
|
242
|
+
});
|
|
243
|
+
return parser;
|
|
191
244
|
}
|
|
192
245
|
}
|
|
193
246
|
exports.CSV = CSV;
|
|
247
|
+
var csv_stream_2 = require("./csv-stream");
|
|
248
|
+
Object.defineProperty(exports, "CsvParserStream", { enumerable: true, get: function () { return csv_stream_2.CsvParserStream; } });
|
|
249
|
+
Object.defineProperty(exports, "CsvFormatterStream", { enumerable: true, get: function () { return csv_stream_2.CsvFormatterStream; } });
|
package/dist/cjs/doc/anchor.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Anchor = void 0;
|
|
4
|
-
const
|
|
4
|
+
const col_cache_1 = require("../utils/col-cache");
|
|
5
5
|
function isAnchorModel(value) {
|
|
6
6
|
return (typeof value === "object" &&
|
|
7
7
|
"nativeCol" in value &&
|
|
@@ -22,7 +22,7 @@ class Anchor {
|
|
|
22
22
|
this.nativeRowOff = 0;
|
|
23
23
|
}
|
|
24
24
|
else if (typeof address === "string") {
|
|
25
|
-
const decoded =
|
|
25
|
+
const decoded = col_cache_1.colCache.decodeAddress(address);
|
|
26
26
|
this.nativeCol = decoded.col + offset;
|
|
27
27
|
this.nativeColOff = 0;
|
|
28
28
|
this.nativeRow = decoded.row + offset;
|