@cj-tech-master/excelts 1.6.3-canary.20251224124621.73c5d94 → 1.6.3
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 +18 -31
- package/README_zh.md +19 -31
- package/dist/browser/excelts.iife.js +40910 -7518
- package/dist/browser/excelts.iife.js.map +1 -1
- package/dist/browser/excelts.iife.min.js +105 -25
- package/dist/cjs/csv/csv.js +162 -226
- package/dist/cjs/doc/anchor.js +2 -2
- package/dist/cjs/doc/cell.js +22 -22
- package/dist/cjs/doc/column.js +7 -7
- package/dist/cjs/doc/data-validations.js +3 -3
- package/dist/cjs/doc/defined-names.js +13 -13
- package/dist/cjs/doc/image.js +7 -7
- package/dist/cjs/doc/modelcontainer.js +2 -2
- package/dist/cjs/doc/note.js +2 -2
- package/dist/cjs/doc/pivot-table.js +5 -5
- package/dist/cjs/doc/range.js +11 -11
- package/dist/cjs/doc/row.js +16 -16
- package/dist/cjs/doc/table.js +5 -5
- package/dist/cjs/doc/workbook.js +179 -68
- package/dist/cjs/doc/worksheet.js +41 -41
- package/dist/cjs/index.js +32 -49
- 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 +34 -34
- package/dist/cjs/stream/xlsx/worksheet-reader.js +17 -17
- package/dist/cjs/stream/xlsx/worksheet-writer.js +60 -60
- package/dist/cjs/utils/cell-format.js +2 -2
- package/dist/cjs/utils/cell-matrix.js +5 -5
- package/dist/cjs/utils/parse-sax.js +2 -2
- package/dist/cjs/utils/shared-formula.js +5 -5
- package/dist/cjs/utils/sheet-utils.js +13 -13
- package/dist/cjs/utils/stream-buf.js +5 -5
- package/dist/cjs/utils/unzip/extract.js +11 -11
- package/dist/cjs/utils/unzip/index.js +21 -21
- package/dist/cjs/utils/unzip/parse-extra-field.js +3 -3
- package/dist/cjs/utils/unzip/parse.js +16 -16
- package/dist/cjs/utils/unzip/zip-parser.js +3 -3
- package/dist/cjs/utils/utils.js +154 -46
- package/dist/cjs/utils/xml-stream.js +3 -3
- package/dist/cjs/utils/zip/compress.js +198 -18
- package/dist/cjs/utils/zip/index.js +17 -17
- package/dist/cjs/utils/zip/zip-builder.js +10 -10
- package/dist/cjs/utils/zip-stream.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 +11 -10
- 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 +12 -11
- package/dist/cjs/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +8 -8
- package/dist/cjs/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +26 -26
- package/dist/cjs/xlsx/xform/sheet/cf-ext/f-ext-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +14 -14
- package/dist/cjs/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/col-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/data-validations-xform.js +18 -18
- package/dist/cjs/xlsx/xform/sheet/dimension-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/drawing-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/ext-lst-xform.js +5 -5
- package/dist/cjs/xlsx/xform/sheet/header-footer-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/hyperlink-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/merge-cell-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/merges.js +8 -8
- package/dist/cjs/xlsx/xform/sheet/outline-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/page-breaks-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/page-margins-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/page-setup-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/page-setup-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/picture-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/print-options-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/row-breaks-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/row-xform.js +11 -11
- package/dist/cjs/xlsx/xform/sheet/sheet-format-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/sheet-properties-xform.js +8 -8
- package/dist/cjs/xlsx/xform/sheet/sheet-protection-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/sheet-view-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/table-part-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/worksheet-xform.js +68 -68
- package/dist/cjs/xlsx/xform/simple/boolean-xform.js +2 -2
- package/dist/cjs/xlsx/xform/simple/date-xform.js +2 -2
- package/dist/cjs/xlsx/xform/simple/float-xform.js +2 -2
- package/dist/cjs/xlsx/xform/simple/integer-xform.js +2 -2
- package/dist/cjs/xlsx/xform/simple/string-xform.js +2 -2
- package/dist/cjs/xlsx/xform/static-xform.js +4 -4
- package/dist/cjs/xlsx/xform/strings/phonetic-text-xform.js +6 -6
- package/dist/cjs/xlsx/xform/strings/rich-text-xform.js +6 -6
- package/dist/cjs/xlsx/xform/strings/shared-string-xform.js +8 -8
- package/dist/cjs/xlsx/xform/strings/shared-strings-xform.js +6 -6
- package/dist/cjs/xlsx/xform/strings/text-xform.js +2 -2
- package/dist/cjs/xlsx/xform/style/alignment-xform.js +8 -8
- package/dist/cjs/xlsx/xform/style/border-xform.js +8 -8
- package/dist/cjs/xlsx/xform/style/color-xform.js +2 -2
- package/dist/cjs/xlsx/xform/style/dxf-xform.js +14 -14
- package/dist/cjs/xlsx/xform/style/fill-xform.js +9 -9
- package/dist/cjs/xlsx/xform/style/font-xform.js +22 -22
- package/dist/cjs/xlsx/xform/style/numfmt-xform.js +5 -5
- package/dist/cjs/xlsx/xform/style/protection-xform.js +2 -2
- package/dist/cjs/xlsx/xform/style/style-xform.js +6 -6
- package/dist/cjs/xlsx/xform/style/styles-xform.js +39 -39
- package/dist/cjs/xlsx/xform/style/underline-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/auto-filter-xform.js +4 -4
- package/dist/cjs/xlsx/xform/table/custom-filter-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/filter-column-xform.js +9 -9
- package/dist/cjs/xlsx/xform/table/filter-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/table-column-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/table-style-info-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/table-xform.js +12 -12
- package/dist/cjs/xlsx/xlsx.js +833 -91
- package/dist/esm/csv/csv.js +159 -189
- package/dist/esm/doc/workbook.js +175 -64
- package/dist/esm/index.browser.js +1 -33
- package/dist/esm/index.js +8 -23
- package/dist/esm/local.js +1 -0
- package/dist/esm/utils/utils.js +123 -15
- package/dist/esm/utils/zip/compress.js +164 -16
- package/dist/esm/xlsx/xform/pivot-table/pivot-table-xform.js +3 -2
- package/dist/esm/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +3 -2
- package/dist/esm/xlsx/xlsx.js +829 -87
- package/dist/types/csv/csv.d.ts +71 -97
- package/dist/types/doc/anchor.d.ts +1 -1
- package/dist/types/doc/cell.d.ts +7 -7
- package/dist/types/doc/column.d.ts +3 -3
- package/dist/types/doc/defined-names.d.ts +4 -4
- package/dist/types/doc/image.d.ts +2 -2
- package/dist/types/doc/modelcontainer.d.ts +1 -1
- package/dist/types/doc/pivot-table.d.ts +1 -1
- package/dist/types/doc/range.d.ts +1 -1
- package/dist/types/doc/row.d.ts +3 -3
- package/dist/types/doc/table.d.ts +2 -2
- package/dist/types/doc/workbook.d.ts +92 -62
- package/dist/types/doc/worksheet.d.ts +10 -10
- package/dist/types/index.browser.d.ts +5 -19
- package/dist/types/index.d.ts +23 -24
- package/dist/types/local.d.ts +1 -0
- 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 +6 -6
- package/dist/types/stream/xlsx/worksheet-reader.d.ts +5 -5
- package/dist/types/stream/xlsx/worksheet-writer.d.ts +9 -9
- package/dist/types/utils/col-cache.d.ts +1 -1
- package/dist/types/utils/sheet-utils.d.ts +3 -3
- package/dist/types/utils/unzip/extract.d.ts +6 -6
- package/dist/types/utils/unzip/index.d.ts +8 -8
- package/dist/types/utils/unzip/parse.d.ts +3 -3
- package/dist/types/utils/utils.d.ts +25 -6
- package/dist/types/utils/zip/compress.d.ts +45 -13
- package/dist/types/utils/zip/index.d.ts +5 -5
- package/dist/types/utils/zip/zip-builder.d.ts +1 -1
- package/dist/types/xlsx/xform/base-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/defined-name-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/sheet-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-calc-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-pivot-cache-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-view-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/comment/comment-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/comment/comments-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/comment/style/vml-position-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/style/vml-protection-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-anchor-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-client-data-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-notes-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-shape-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-textbox-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/composite-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/app-heading-pairs-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/app-titles-of-parts-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/app-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/content-types-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/core-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/relationship-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/relationships-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/base-cell-anchor-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/blip-fill-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/drawing/blip-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/c-nv-pic-pr-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/c-nv-pr-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/cell-position-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/drawing/drawing-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/ext-lst-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/ext-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/hlink-click-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/nv-pic-pr-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/pic-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/list-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/pivot-table/cache-field-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/pivot-table/pivot-table-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/auto-filter-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cell-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/cf-rule-xform.d.ts +6 -6
- package/dist/types/xlsx/xform/sheet/cf/cfvo-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/color-scale-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf/conditional-formatting-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/conditional-formattings-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/sheet/cf/databar-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf/ext-lst-ref-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/formula-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/icon-set-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/sheet/cf-ext/databar-ext-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf-ext/f-ext-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf-ext/sqref-ext-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/col-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/data-validations-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/dimension-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/drawing-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/ext-lst-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/header-footer-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/hyperlink-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/merge-cell-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/outline-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/page-breaks-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/page-margins-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/page-setup-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/page-setup-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/picture-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/print-options-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/row-breaks-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/row-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/sheet-format-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/sheet-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/sheet-protection-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/sheet-view-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/table-part-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/worksheet-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/boolean-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/date-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/float-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/integer-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/string-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/static-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/strings/phonetic-text-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/strings/rich-text-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/strings/shared-string-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/strings/shared-strings-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/strings/text-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/alignment-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/border-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/style/color-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/dxf-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/fill-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/style/font-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/numfmt-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/protection-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/style-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/style/styles-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/style/underline-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/auto-filter-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/table/custom-filter-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/filter-column-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/table/filter-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/table-column-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/table-style-info-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/table-xform.d.ts +1 -1
- package/dist/types/xlsx/xlsx.d.ts +80 -20
- package/package.json +15 -13
- package/dist/browser/excelts.esm.js +0 -19115
- package/dist/browser/excelts.esm.js.map +0 -1
- package/dist/browser/excelts.esm.min.js +0 -127
- package/dist/cjs/csv/csv-core.js +0 -701
- package/dist/cjs/csv/csv-stream.js +0 -646
- package/dist/cjs/csv/csv.base.js +0 -154
- package/dist/cjs/csv/csv.browser.js +0 -68
- package/dist/cjs/doc/workbook.base.js +0 -211
- package/dist/cjs/doc/workbook.browser.js +0 -62
- package/dist/cjs/utils/browser-buffer.js +0 -75
- package/dist/cjs/utils/encryptor.browser.js +0 -240
- package/dist/cjs/utils/stream-buf.browser.js +0 -355
- package/dist/cjs/utils/utils.base.js +0 -161
- package/dist/cjs/utils/utils.browser.js +0 -89
- package/dist/cjs/utils/zip/compress.base.js +0 -85
- package/dist/cjs/utils/zip/compress.browser.js +0 -83
- package/dist/cjs/utils/zip/crc32.browser.js +0 -88
- package/dist/cjs/utils/zip-stream.browser.js +0 -135
- package/dist/cjs/xlsx/xlsx.base.js +0 -742
- package/dist/cjs/xlsx/xlsx.browser.js +0 -205
- package/dist/esm/csv/csv-core.js +0 -694
- package/dist/esm/csv/csv-stream.js +0 -638
- package/dist/esm/csv/csv.base.js +0 -141
- package/dist/esm/csv/csv.browser.js +0 -65
- package/dist/esm/doc/workbook.base.js +0 -207
- package/dist/esm/doc/workbook.browser.js +0 -59
- package/dist/esm/utils/browser-buffer.js +0 -67
- package/dist/esm/utils/encryptor.browser.js +0 -237
- package/dist/esm/utils/stream-buf.browser.js +0 -352
- package/dist/esm/utils/utils.base.js +0 -142
- package/dist/esm/utils/utils.browser.js +0 -68
- package/dist/esm/utils/zip/compress.base.js +0 -80
- package/dist/esm/utils/zip/compress.browser.js +0 -76
- package/dist/esm/utils/zip/crc32.browser.js +0 -82
- package/dist/esm/utils/zip-stream.browser.js +0 -132
- package/dist/esm/xlsx/xlsx.base.js +0 -739
- package/dist/esm/xlsx/xlsx.browser.js +0 -202
- package/dist/types/csv/csv-core.d.ts +0 -207
- package/dist/types/csv/csv-stream.d.ts +0 -114
- package/dist/types/csv/csv.base.d.ts +0 -61
- package/dist/types/csv/csv.browser.d.ts +0 -33
- package/dist/types/doc/workbook.base.d.ts +0 -111
- package/dist/types/doc/workbook.browser.d.ts +0 -38
- package/dist/types/utils/browser-buffer.d.ts +0 -28
- package/dist/types/utils/encryptor.browser.d.ts +0 -28
- package/dist/types/utils/stream-buf.browser.d.ts +0 -41
- package/dist/types/utils/utils.base.d.ts +0 -29
- package/dist/types/utils/utils.browser.d.ts +0 -29
- package/dist/types/utils/zip/compress.base.d.ts +0 -42
- package/dist/types/utils/zip/compress.browser.d.ts +0 -54
- package/dist/types/utils/zip/crc32.browser.d.ts +0 -52
- package/dist/types/utils/zip-stream.browser.d.ts +0 -39
- package/dist/types/xlsx/xlsx.base.d.ts +0 -134
- package/dist/types/xlsx/xlsx.browser.d.ts +0 -31
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* XLSX Browser version - No Node.js dependencies
|
|
3
|
-
*
|
|
4
|
-
* Extends XLSXBase with:
|
|
5
|
-
* - load: Load from buffer/ArrayBuffer/Uint8Array
|
|
6
|
-
* - writeBuffer: Write to BrowserBuffer (Uint8Array with toString("base64"))
|
|
7
|
-
*
|
|
8
|
-
* NOT supported:
|
|
9
|
-
* - readFile/writeFile (no file system)
|
|
10
|
-
* - read/write (no streams)
|
|
11
|
-
*/
|
|
12
|
-
import { Unzip, UnzipInflate } from "fflate";
|
|
13
|
-
import { ZipWriter } from "../utils/zip-stream.browser.js";
|
|
14
|
-
import { StreamBuf } from "../utils/stream-buf.browser.js";
|
|
15
|
-
import { bufferToString } from "../utils/utils.js";
|
|
16
|
-
import { base64ToUint8Array, BrowserBuffer } from "../utils/browser-buffer.js";
|
|
17
|
-
import { XLSXBase } from "./xlsx.base.js";
|
|
18
|
-
/**
|
|
19
|
-
* Simple stream-like wrapper for parsing - implements async iterable
|
|
20
|
-
*/
|
|
21
|
-
class SimpleStream {
|
|
22
|
-
constructor(data) {
|
|
23
|
-
this.listeners = new Map();
|
|
24
|
-
this.ended = false;
|
|
25
|
-
this.data = data;
|
|
26
|
-
}
|
|
27
|
-
async *[Symbol.asyncIterator]() {
|
|
28
|
-
yield this.data;
|
|
29
|
-
}
|
|
30
|
-
on(event, callback) {
|
|
31
|
-
const listeners = this.listeners.get(event) || [];
|
|
32
|
-
listeners.push(callback);
|
|
33
|
-
this.listeners.set(event, listeners);
|
|
34
|
-
if (!this.ended) {
|
|
35
|
-
this.ended = true;
|
|
36
|
-
queueMicrotask(() => {
|
|
37
|
-
this.emit("data", this.data);
|
|
38
|
-
this.emit("end");
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
return this;
|
|
42
|
-
}
|
|
43
|
-
removeListener(event, callback) {
|
|
44
|
-
const listeners = this.listeners.get(event) || [];
|
|
45
|
-
const index = listeners.indexOf(callback);
|
|
46
|
-
if (index !== -1) {
|
|
47
|
-
listeners.splice(index, 1);
|
|
48
|
-
}
|
|
49
|
-
return this;
|
|
50
|
-
}
|
|
51
|
-
emit(event, ...args) {
|
|
52
|
-
const listeners = this.listeners.get(event) || [];
|
|
53
|
-
listeners.forEach(cb => cb(...args));
|
|
54
|
-
}
|
|
55
|
-
pipe(dest) {
|
|
56
|
-
dest.write(this.data instanceof Uint8Array ? this.data : new TextEncoder().encode(this.data));
|
|
57
|
-
dest.end();
|
|
58
|
-
return dest;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
class XLSX extends XLSXBase {
|
|
62
|
-
// ===========================================================================
|
|
63
|
-
// Abstract method implementations
|
|
64
|
-
// ===========================================================================
|
|
65
|
-
createStreamBuf() {
|
|
66
|
-
return new StreamBuf();
|
|
67
|
-
}
|
|
68
|
-
createBinaryStream(data) {
|
|
69
|
-
return new SimpleStream(data);
|
|
70
|
-
}
|
|
71
|
-
createTextStream(content) {
|
|
72
|
-
return new SimpleStream(content);
|
|
73
|
-
}
|
|
74
|
-
bufferToString(data) {
|
|
75
|
-
return bufferToString(data);
|
|
76
|
-
}
|
|
77
|
-
// ===========================================================================
|
|
78
|
-
// Browser specific: Buffer operations
|
|
79
|
-
// ===========================================================================
|
|
80
|
-
/**
|
|
81
|
-
* Load workbook from buffer/ArrayBuffer/Uint8Array
|
|
82
|
-
* This is the main entry point for browser usage
|
|
83
|
-
*/
|
|
84
|
-
async load(data, options) {
|
|
85
|
-
let buffer;
|
|
86
|
-
if (!data ||
|
|
87
|
-
(typeof data === "object" && !(data instanceof Uint8Array) && !(data instanceof ArrayBuffer))) {
|
|
88
|
-
throw new Error("Can't read the data of 'the loaded zip file'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?");
|
|
89
|
-
}
|
|
90
|
-
if (options && options.base64) {
|
|
91
|
-
buffer = base64ToUint8Array(data.toString());
|
|
92
|
-
}
|
|
93
|
-
else if (data instanceof ArrayBuffer) {
|
|
94
|
-
buffer = new Uint8Array(data);
|
|
95
|
-
}
|
|
96
|
-
else if (data instanceof Uint8Array) {
|
|
97
|
-
buffer = data;
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
buffer = new Uint8Array(data);
|
|
101
|
-
}
|
|
102
|
-
const allFiles = {};
|
|
103
|
-
await new Promise((resolve, reject) => {
|
|
104
|
-
let filesProcessed = 0;
|
|
105
|
-
let zipEnded = false;
|
|
106
|
-
let filesStarted = 0;
|
|
107
|
-
const checkCompletion = () => {
|
|
108
|
-
if (zipEnded && filesProcessed === filesStarted) {
|
|
109
|
-
resolve();
|
|
110
|
-
}
|
|
111
|
-
};
|
|
112
|
-
const unzipper = new Unzip((file) => {
|
|
113
|
-
filesStarted++;
|
|
114
|
-
const fileChunks = [];
|
|
115
|
-
let totalLength = 0;
|
|
116
|
-
file.ondata = (err, fileData, final) => {
|
|
117
|
-
if (err) {
|
|
118
|
-
reject(err);
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
if (fileData) {
|
|
122
|
-
fileChunks.push(fileData);
|
|
123
|
-
totalLength += fileData.length;
|
|
124
|
-
}
|
|
125
|
-
if (final) {
|
|
126
|
-
if (fileChunks.length === 1) {
|
|
127
|
-
allFiles[file.name] = fileChunks[0];
|
|
128
|
-
}
|
|
129
|
-
else if (fileChunks.length > 1) {
|
|
130
|
-
const fullData = new Uint8Array(totalLength);
|
|
131
|
-
let offset = 0;
|
|
132
|
-
for (const chunk of fileChunks) {
|
|
133
|
-
fullData.set(chunk, offset);
|
|
134
|
-
offset += chunk.length;
|
|
135
|
-
}
|
|
136
|
-
allFiles[file.name] = fullData;
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
allFiles[file.name] = new Uint8Array(0);
|
|
140
|
-
}
|
|
141
|
-
filesProcessed++;
|
|
142
|
-
fileChunks.length = 0;
|
|
143
|
-
checkCompletion();
|
|
144
|
-
}
|
|
145
|
-
};
|
|
146
|
-
file.start();
|
|
147
|
-
});
|
|
148
|
-
unzipper.register(UnzipInflate);
|
|
149
|
-
unzipper.push(buffer, true);
|
|
150
|
-
zipEnded = true;
|
|
151
|
-
checkCompletion();
|
|
152
|
-
});
|
|
153
|
-
return this.loadFromFiles(allFiles, options);
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Write workbook to buffer
|
|
157
|
-
* Returns a BrowserBuffer which supports toString("base64")
|
|
158
|
-
*/
|
|
159
|
-
async writeBuffer(options) {
|
|
160
|
-
options = options || {};
|
|
161
|
-
const { model } = this.workbook;
|
|
162
|
-
const zip = new ZipWriter(options.zip);
|
|
163
|
-
const stream = new StreamBuf();
|
|
164
|
-
zip.pipe(stream);
|
|
165
|
-
this.prepareModel(model, options);
|
|
166
|
-
await this.addContentTypes(zip, model);
|
|
167
|
-
await this.addOfficeRels(zip, model);
|
|
168
|
-
await this.addWorkbookRels(zip, model);
|
|
169
|
-
await this.addWorksheets(zip, model);
|
|
170
|
-
await this.addSharedStrings(zip, model);
|
|
171
|
-
this.addDrawings(zip, model);
|
|
172
|
-
this.addTables(zip, model);
|
|
173
|
-
this.addPivotTables(zip, model);
|
|
174
|
-
await Promise.all([this.addThemes(zip, model), this.addStyles(zip, model)]);
|
|
175
|
-
await this.addMedia(zip, model);
|
|
176
|
-
await Promise.all([this.addApp(zip, model), this.addCore(zip, model)]);
|
|
177
|
-
await this.addWorkbook(zip, model);
|
|
178
|
-
await this._finalize(zip);
|
|
179
|
-
return BrowserBuffer.from(stream.read());
|
|
180
|
-
}
|
|
181
|
-
// ===========================================================================
|
|
182
|
-
// Browser specific: Media handling (no file support)
|
|
183
|
-
// ===========================================================================
|
|
184
|
-
async addMedia(zip, model) {
|
|
185
|
-
await Promise.all(model.media.map(async (medium) => {
|
|
186
|
-
if (medium.type === "image") {
|
|
187
|
-
const filename = `xl/media/${medium.name}.${medium.extension}`;
|
|
188
|
-
if (medium.buffer) {
|
|
189
|
-
return zip.append(medium.buffer, { name: filename });
|
|
190
|
-
}
|
|
191
|
-
if (medium.base64) {
|
|
192
|
-
const dataimg64 = medium.base64;
|
|
193
|
-
const content = dataimg64.substring(dataimg64.indexOf(",") + 1);
|
|
194
|
-
return zip.append(content, { name: filename, base64: true });
|
|
195
|
-
}
|
|
196
|
-
throw new Error("Loading images from filename is not supported in browser");
|
|
197
|
-
}
|
|
198
|
-
throw new Error("Unsupported media");
|
|
199
|
-
}));
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
export { XLSX };
|
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CSV Parser and Formatter - RFC 4180 compliant
|
|
3
|
-
*
|
|
4
|
-
* A lightweight, cross-platform CSV implementation that works in both
|
|
5
|
-
* Node.js and Browser environments with zero dependencies.
|
|
6
|
-
*
|
|
7
|
-
* Compatible with fast-csv API for drop-in replacement.
|
|
8
|
-
*
|
|
9
|
-
* @see https://tools.ietf.org/html/rfc4180
|
|
10
|
-
*/
|
|
11
|
-
/** Header array type (can include undefined to skip columns) */
|
|
12
|
-
export type HeaderArray = (string | undefined | null)[];
|
|
13
|
-
/** Header transform function */
|
|
14
|
-
export type HeaderTransformFunction = (headers: string[]) => HeaderArray;
|
|
15
|
-
/** Row types */
|
|
16
|
-
export type RowArray = string[];
|
|
17
|
-
export type RowMap = Record<string, string>;
|
|
18
|
-
export type Row = RowArray | RowMap;
|
|
19
|
-
/** Row transform callback */
|
|
20
|
-
export type RowTransformCallback<T> = (error?: Error | null, row?: T | null) => void;
|
|
21
|
-
/** Row transform function - sync or async */
|
|
22
|
-
export type RowTransformFunction<I = Row, O = Row> = ((row: I) => O | null) | ((row: I, callback: RowTransformCallback<O>) => void);
|
|
23
|
-
/** Row validate callback */
|
|
24
|
-
export type RowValidateCallback = (error?: Error | null, isValid?: boolean, reason?: string) => void;
|
|
25
|
-
/** Row validate function - sync or async */
|
|
26
|
-
export type RowValidateFunction<T = Row> = ((row: T) => boolean) | ((row: T, callback: RowValidateCallback) => void);
|
|
27
|
-
/** Validation result */
|
|
28
|
-
export interface RowValidationResult<T = Row> {
|
|
29
|
-
row: T | null;
|
|
30
|
-
isValid: boolean;
|
|
31
|
-
reason?: string;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* CSV parsing options - compatible with fast-csv
|
|
35
|
-
*/
|
|
36
|
-
export interface CsvParseOptions {
|
|
37
|
-
/** Field delimiter (default: ",") */
|
|
38
|
-
delimiter?: string;
|
|
39
|
-
/** Quote character (default: '"'), set to false or null to disable quoting */
|
|
40
|
-
quote?: string | false | null;
|
|
41
|
-
/** Escape character for quotes (default: '"'), set to false or null to disable */
|
|
42
|
-
escape?: string | false | null;
|
|
43
|
-
/** Skip empty lines (default: false) - same as fast-csv ignoreEmpty */
|
|
44
|
-
skipEmptyLines?: boolean;
|
|
45
|
-
/** Alias for skipEmptyLines for fast-csv compatibility */
|
|
46
|
-
ignoreEmpty?: boolean;
|
|
47
|
-
/** Trim whitespace from both sides of fields (default: false) */
|
|
48
|
-
trim?: boolean;
|
|
49
|
-
/** Left trim whitespace from fields (default: false) */
|
|
50
|
-
ltrim?: boolean;
|
|
51
|
-
/** Right trim whitespace from fields (default: false) */
|
|
52
|
-
rtrim?: boolean;
|
|
53
|
-
/**
|
|
54
|
-
* Header handling:
|
|
55
|
-
* - true: first row is headers, return objects
|
|
56
|
-
* - false: no headers, return arrays
|
|
57
|
-
* - string[]: use these as headers
|
|
58
|
-
* - function: transform first row headers
|
|
59
|
-
*/
|
|
60
|
-
headers?: boolean | HeaderArray | HeaderTransformFunction;
|
|
61
|
-
/**
|
|
62
|
-
* If true and headers is string[], discard first row and use provided headers
|
|
63
|
-
*/
|
|
64
|
-
renameHeaders?: boolean;
|
|
65
|
-
/** Comment character - lines starting with this are ignored */
|
|
66
|
-
comment?: string;
|
|
67
|
-
/** Maximum number of data rows to parse (excluding header) */
|
|
68
|
-
maxRows?: number;
|
|
69
|
-
/** Number of lines to skip at the beginning (before header detection) */
|
|
70
|
-
skipLines?: number;
|
|
71
|
-
/** Number of data rows to skip (after header detection) */
|
|
72
|
-
skipRows?: number;
|
|
73
|
-
/**
|
|
74
|
-
* Strict column handling:
|
|
75
|
-
* - If true, rows with column count mismatch emit 'data-invalid' event
|
|
76
|
-
* - If false (default), throws error on mismatch (unless discardUnmappedColumns)
|
|
77
|
-
*/
|
|
78
|
-
strictColumnHandling?: boolean;
|
|
79
|
-
/**
|
|
80
|
-
* If true, discard columns that exceed header count
|
|
81
|
-
* Only valid when headers are specified
|
|
82
|
-
*/
|
|
83
|
-
discardUnmappedColumns?: boolean;
|
|
84
|
-
/**
|
|
85
|
-
* Enable object mode (default: true for Node.js streams)
|
|
86
|
-
* - true: push row objects/arrays
|
|
87
|
-
* - false: push JSON strings
|
|
88
|
-
*/
|
|
89
|
-
objectMode?: boolean;
|
|
90
|
-
/**
|
|
91
|
-
* Character encoding for input (default: "utf8")
|
|
92
|
-
* Only used in Node.js streaming context
|
|
93
|
-
*/
|
|
94
|
-
encoding?: BufferEncoding;
|
|
95
|
-
/**
|
|
96
|
-
* Synchronous transform function to apply to each row after parsing
|
|
97
|
-
* Return null/undefined to skip the row
|
|
98
|
-
* Works in both Node.js and Browser environments
|
|
99
|
-
*
|
|
100
|
-
* @example
|
|
101
|
-
* // With headers (row is Record<string, string>)
|
|
102
|
-
* transform: (row) => ({ ...row, name: row.name.toUpperCase() })
|
|
103
|
-
*
|
|
104
|
-
* // Without headers (row is string[])
|
|
105
|
-
* transform: (row) => [row[0].toUpperCase(), row[1]]
|
|
106
|
-
*/
|
|
107
|
-
transform?: (row: Row) => Row | null | undefined;
|
|
108
|
-
/**
|
|
109
|
-
* Synchronous validate function to check each row
|
|
110
|
-
* Return false to mark row as invalid (will be in invalidRows)
|
|
111
|
-
* Can also return { isValid: boolean, reason?: string }
|
|
112
|
-
* Works in both Node.js and Browser environments
|
|
113
|
-
*
|
|
114
|
-
* @example
|
|
115
|
-
* // With headers
|
|
116
|
-
* validate: (row) => row.name !== ''
|
|
117
|
-
*
|
|
118
|
-
* // With custom reason
|
|
119
|
-
* validate: (row) => ({ isValid: row.age >= 18, reason: 'Must be adult' })
|
|
120
|
-
*/
|
|
121
|
-
validate?: (row: Row) => boolean | {
|
|
122
|
-
isValid: boolean;
|
|
123
|
-
reason?: string;
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* CSV formatting options - compatible with fast-csv
|
|
128
|
-
*/
|
|
129
|
-
export interface CsvFormatOptions {
|
|
130
|
-
/** Field delimiter (default: ",") */
|
|
131
|
-
delimiter?: string;
|
|
132
|
-
/** Quote character (default: '"'), set to false or null to disable quoting */
|
|
133
|
-
quote?: string | false | null;
|
|
134
|
-
/** Escape character (default: same as quote) */
|
|
135
|
-
escape?: string | false | null;
|
|
136
|
-
/** Row delimiter (default: "\n" for fast-csv compatibility) */
|
|
137
|
-
rowDelimiter?: string;
|
|
138
|
-
/** Always quote all fields (default: false, only quote when necessary) */
|
|
139
|
-
alwaysQuote?: boolean;
|
|
140
|
-
/** Quote specific columns by name or index */
|
|
141
|
-
quoteColumns?: boolean | boolean[] | Record<string, boolean>;
|
|
142
|
-
/** Quote header fields */
|
|
143
|
-
quoteHeaders?: boolean | boolean[] | Record<string, boolean>;
|
|
144
|
-
/**
|
|
145
|
-
* Header handling:
|
|
146
|
-
* - true: auto-detect headers from first object
|
|
147
|
-
* - false/null: no headers
|
|
148
|
-
* - string[]: use these as headers
|
|
149
|
-
*/
|
|
150
|
-
headers?: string[] | boolean | null;
|
|
151
|
-
/**
|
|
152
|
-
* Whether to write headers (default: true when headers is provided)
|
|
153
|
-
* Set to false to suppress header row output
|
|
154
|
-
*/
|
|
155
|
-
writeHeaders?: boolean;
|
|
156
|
-
/** Include BOM for UTF-8 (default: false) */
|
|
157
|
-
writeBOM?: boolean;
|
|
158
|
-
/** Include final row delimiter (default: true) */
|
|
159
|
-
includeEndRowDelimiter?: boolean;
|
|
160
|
-
/** Write headers even when there's no data (default: false) */
|
|
161
|
-
alwaysWriteHeaders?: boolean;
|
|
162
|
-
/**
|
|
163
|
-
* Transform function to apply to each row before formatting
|
|
164
|
-
* Can be sync (returns row) or async (calls callback)
|
|
165
|
-
*/
|
|
166
|
-
transform?: RowTransformFunction<Row, Row>;
|
|
167
|
-
/**
|
|
168
|
-
* Enable object mode (default: true for Node.js streams)
|
|
169
|
-
* - true: accept row objects/arrays directly
|
|
170
|
-
* - false: accept JSON strings
|
|
171
|
-
*/
|
|
172
|
-
objectMode?: boolean;
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Parsed CSV result with headers
|
|
176
|
-
*/
|
|
177
|
-
export interface CsvParseResult<T = string[]> {
|
|
178
|
-
/** Header row (if headers option was true) */
|
|
179
|
-
headers?: string[];
|
|
180
|
-
/** Data rows */
|
|
181
|
-
rows: T[];
|
|
182
|
-
/** Invalid rows (when strictColumnHandling is true) */
|
|
183
|
-
invalidRows?: {
|
|
184
|
-
row: string[];
|
|
185
|
-
reason: string;
|
|
186
|
-
}[];
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Check if a transform function is synchronous (1 argument) vs async (2 arguments)
|
|
190
|
-
*/
|
|
191
|
-
export declare function isSyncTransform<I, O>(transform: RowTransformFunction<I, O>): transform is (row: I) => O | null;
|
|
192
|
-
/**
|
|
193
|
-
* Check if a validate function is synchronous (1 argument) vs async (2 arguments)
|
|
194
|
-
*/
|
|
195
|
-
export declare function isSyncValidate<T>(validate: RowValidateFunction<T>): validate is (row: T) => boolean;
|
|
196
|
-
/**
|
|
197
|
-
* Parse a CSV string into rows of fields
|
|
198
|
-
*/
|
|
199
|
-
export declare function parseCsv(input: string, options?: CsvParseOptions): string[][] | CsvParseResult<Record<string, string>>;
|
|
200
|
-
/**
|
|
201
|
-
* Format data as a CSV string
|
|
202
|
-
*/
|
|
203
|
-
export declare function formatCsv(data: (string | number | boolean | null | undefined)[][] | Record<string, any>[], options?: CsvFormatOptions): string;
|
|
204
|
-
/**
|
|
205
|
-
* Async CSV parser that yields rows one at a time
|
|
206
|
-
*/
|
|
207
|
-
export declare function parseCsvStream(input: string | AsyncIterable<string>, options?: CsvParseOptions): AsyncGenerator<string[] | Record<string, string>, void, unknown>;
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CSV Streaming Support for Node.js
|
|
3
|
-
*
|
|
4
|
-
* Provides true streaming CSV parsing and formatting using Node.js streams.
|
|
5
|
-
* This enables processing of large CSV files without loading them entirely into memory.
|
|
6
|
-
*/
|
|
7
|
-
import { Transform, type Readable, type TransformCallback } from "stream";
|
|
8
|
-
import type { CsvParseOptions, CsvFormatOptions, RowTransformFunction, RowValidateFunction, Row } from "./csv-core";
|
|
9
|
-
/**
|
|
10
|
-
* Transform stream that parses CSV data row by row
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```ts
|
|
14
|
-
* const parser = new CsvParserStream({ headers: true });
|
|
15
|
-
* fs.createReadStream('data.csv')
|
|
16
|
-
* .pipe(parser)
|
|
17
|
-
* .on('data', (row) => console.log(row));
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
export declare class CsvParserStream extends Transform {
|
|
21
|
-
private options;
|
|
22
|
-
private buffer;
|
|
23
|
-
private currentRow;
|
|
24
|
-
private currentField;
|
|
25
|
-
private inQuotes;
|
|
26
|
-
private lineNumber;
|
|
27
|
-
private rowCount;
|
|
28
|
-
private skippedDataRows;
|
|
29
|
-
private headerRow;
|
|
30
|
-
private headersEmitted;
|
|
31
|
-
private delimiter;
|
|
32
|
-
private quote;
|
|
33
|
-
private escape;
|
|
34
|
-
private quoteEnabled;
|
|
35
|
-
private _rowTransform;
|
|
36
|
-
private _rowValidator;
|
|
37
|
-
private encoding;
|
|
38
|
-
constructor(options?: CsvParseOptions);
|
|
39
|
-
/**
|
|
40
|
-
* Set a transform function to modify rows before emitting
|
|
41
|
-
* Supports both sync and async transforms
|
|
42
|
-
*/
|
|
43
|
-
transform<I extends Row = Row, O extends Row = Row>(transformFunction: RowTransformFunction<I, O>): this;
|
|
44
|
-
/**
|
|
45
|
-
* Set a validate function to filter rows
|
|
46
|
-
* Invalid rows emit 'data-invalid' event
|
|
47
|
-
*/
|
|
48
|
-
validate<T extends Row = Row>(validateFunction: RowValidateFunction<T>): this;
|
|
49
|
-
_transform(chunk: Buffer | string, encoding: BufferEncoding, callback: TransformCallback): void;
|
|
50
|
-
_flush(callback: TransformCallback): void;
|
|
51
|
-
private applyTrim;
|
|
52
|
-
private processBuffer;
|
|
53
|
-
private buildRow;
|
|
54
|
-
private processPendingRows;
|
|
55
|
-
private transformAndValidateRow;
|
|
56
|
-
private validateRow;
|
|
57
|
-
private emitRow;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Options for CSV formatter stream
|
|
61
|
-
*/
|
|
62
|
-
export interface CsvFormatterStreamOptions extends CsvFormatOptions {
|
|
63
|
-
/** Whether input is objects (vs arrays) */
|
|
64
|
-
objectMode?: boolean;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Transform stream that formats rows to CSV
|
|
68
|
-
*
|
|
69
|
-
* @example
|
|
70
|
-
* ```ts
|
|
71
|
-
* const formatter = new CsvFormatterStream({ headers: ['name', 'age'] });
|
|
72
|
-
* formatter.pipe(fs.createWriteStream('output.csv'));
|
|
73
|
-
* formatter.write(['Alice', 30]);
|
|
74
|
-
* formatter.write(['Bob', 25]);
|
|
75
|
-
* formatter.end();
|
|
76
|
-
* ```
|
|
77
|
-
*/
|
|
78
|
-
export declare class CsvFormatterStream extends Transform {
|
|
79
|
-
private options;
|
|
80
|
-
private delimiter;
|
|
81
|
-
private quote;
|
|
82
|
-
private escape;
|
|
83
|
-
private rowDelimiter;
|
|
84
|
-
private quoteEnabled;
|
|
85
|
-
private alwaysQuote;
|
|
86
|
-
private headerWritten;
|
|
87
|
-
private headers;
|
|
88
|
-
private shouldWriteHeaders;
|
|
89
|
-
private rowCount;
|
|
90
|
-
private _rowTransform;
|
|
91
|
-
constructor(options?: CsvFormatterStreamOptions);
|
|
92
|
-
/**
|
|
93
|
-
* Set a transform function to modify rows before formatting
|
|
94
|
-
*/
|
|
95
|
-
transform<I extends Row = Row, O extends Row = Row>(transformFunction: RowTransformFunction<I, O>): this;
|
|
96
|
-
_transform(chunk: any, encoding: BufferEncoding, callback: TransformCallback): void;
|
|
97
|
-
_flush(callback: TransformCallback): void;
|
|
98
|
-
private formatAndPush;
|
|
99
|
-
private formatRow;
|
|
100
|
-
private shouldQuoteField;
|
|
101
|
-
private formatField;
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Create a readable stream from an array of rows
|
|
105
|
-
*/
|
|
106
|
-
export declare function createCsvReadableStream(rows: any[][], options?: CsvFormatOptions): Readable;
|
|
107
|
-
/**
|
|
108
|
-
* Create parser stream factory
|
|
109
|
-
*/
|
|
110
|
-
export declare function createCsvParserStream(options?: CsvParseOptions): CsvParserStream;
|
|
111
|
-
/**
|
|
112
|
-
* Create formatter stream factory
|
|
113
|
-
*/
|
|
114
|
-
export declare function createCsvFormatterStream(options?: CsvFormatterStreamOptions): CsvFormatterStream;
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CSV Base class - Shared functionality for Node.js and Browser
|
|
3
|
-
*
|
|
4
|
-
* Uses native CSV parser (RFC 4180 compliant) with zero external dependencies.
|
|
5
|
-
* Date parsing uses dayjs for format flexibility.
|
|
6
|
-
*/
|
|
7
|
-
import { type CsvParseOptions, type CsvFormatOptions } from "./csv-core";
|
|
8
|
-
import type { Workbook } from "../doc/workbook";
|
|
9
|
-
import type { Worksheet } from "../doc/worksheet";
|
|
10
|
-
/**
|
|
11
|
-
* CSV read options
|
|
12
|
-
*/
|
|
13
|
-
export interface CsvReadOptions {
|
|
14
|
-
/** Date format strings to try when parsing (default: ISO formats) */
|
|
15
|
-
dateFormats?: string[];
|
|
16
|
-
/** Custom value mapper function */
|
|
17
|
-
map?(value: any, index: number): any;
|
|
18
|
-
/** Worksheet name to create (default: "Sheet1") */
|
|
19
|
-
sheetName?: string;
|
|
20
|
-
/** CSV parsing options */
|
|
21
|
-
parserOptions?: Partial<CsvParseOptions>;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* CSV write options
|
|
25
|
-
*/
|
|
26
|
-
export interface CsvWriteOptions {
|
|
27
|
-
/** Date format for output (default: ISO format) */
|
|
28
|
-
dateFormat?: string;
|
|
29
|
-
/** Use UTC for dates (default: false) */
|
|
30
|
-
dateUTC?: boolean;
|
|
31
|
-
/** Worksheet name or ID to export */
|
|
32
|
-
sheetName?: string;
|
|
33
|
-
/** Worksheet ID to export */
|
|
34
|
-
sheetId?: number;
|
|
35
|
-
/** Output encoding (default: "utf8") */
|
|
36
|
-
encoding?: string;
|
|
37
|
-
/** Custom value mapper function */
|
|
38
|
-
map?(value: any, index: number): any;
|
|
39
|
-
/** Include empty rows (default: true) */
|
|
40
|
-
includeEmptyRows?: boolean;
|
|
41
|
-
/** CSV formatting options */
|
|
42
|
-
formatterOptions?: Partial<CsvFormatOptions>;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Create the default value mapper for CSV parsing
|
|
46
|
-
*/
|
|
47
|
-
export declare function createDefaultValueMapper(dateFormats: string[]): (datum: any) => any;
|
|
48
|
-
/**
|
|
49
|
-
* Create the default value mapper for CSV writing
|
|
50
|
-
*/
|
|
51
|
-
export declare function createDefaultWriteMapper(dateFormat?: string, dateUTC?: boolean): (value: any) => any;
|
|
52
|
-
/**
|
|
53
|
-
* Parse CSV content into a worksheet
|
|
54
|
-
*/
|
|
55
|
-
export declare function parseCsvToWorksheet(content: string, workbook: Workbook, options?: CsvReadOptions): Worksheet;
|
|
56
|
-
/**
|
|
57
|
-
* Format worksheet as CSV string
|
|
58
|
-
*/
|
|
59
|
-
export declare function formatWorksheetToCsv(worksheet: Worksheet | undefined, options?: CsvWriteOptions): string;
|
|
60
|
-
export { parseCsv, formatCsv, parseCsvStream } from "./csv-core";
|
|
61
|
-
export type { CsvParseOptions, CsvFormatOptions, CsvParseResult } from "./csv-core";
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CSV class for Browser - No file system dependencies
|
|
3
|
-
*
|
|
4
|
-
* Provides:
|
|
5
|
-
* - load: Load from string or ArrayBuffer
|
|
6
|
-
* - writeString: Write to string
|
|
7
|
-
* - writeBuffer: Write to Uint8Array
|
|
8
|
-
*/
|
|
9
|
-
import { type CsvReadOptions, type CsvWriteOptions } from "./csv.base";
|
|
10
|
-
import type { Workbook } from "../doc/workbook.browser";
|
|
11
|
-
import type { Worksheet } from "../doc/worksheet";
|
|
12
|
-
declare class CSV {
|
|
13
|
-
workbook: Workbook;
|
|
14
|
-
constructor(workbook: Workbook);
|
|
15
|
-
/**
|
|
16
|
-
* Load CSV from string or ArrayBuffer
|
|
17
|
-
*/
|
|
18
|
-
load(data: string | ArrayBuffer | Uint8Array, options?: CsvReadOptions): Worksheet;
|
|
19
|
-
/**
|
|
20
|
-
* Write CSV to string
|
|
21
|
-
*/
|
|
22
|
-
writeString(options?: CsvWriteOptions): string;
|
|
23
|
-
/**
|
|
24
|
-
* Write CSV to Uint8Array buffer
|
|
25
|
-
*/
|
|
26
|
-
writeBuffer(options?: CsvWriteOptions): Uint8Array;
|
|
27
|
-
readFile(_filename: string, _options?: CsvReadOptions): Promise<never>;
|
|
28
|
-
read(_stream: any, _options?: CsvReadOptions): Promise<never>;
|
|
29
|
-
writeFile(_filename: string, _options?: CsvWriteOptions): Promise<never>;
|
|
30
|
-
write(_stream: any, _options?: CsvWriteOptions): Promise<never>;
|
|
31
|
-
}
|
|
32
|
-
export { CSV };
|
|
33
|
-
export type { CsvReadOptions, CsvWriteOptions } from "./csv.base";
|