@yuanliwei/exceljs 4.4.0 → 4.4.1
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/dist/LICENSE +22 -0
- package/dist/es5/csv/csv.js +176 -0
- package/dist/es5/csv/csv.js.map +1 -0
- package/dist/es5/csv/line-buffer.js +67 -0
- package/dist/es5/csv/line-buffer.js.map +1 -0
- package/dist/es5/csv/stream-converter.js +110 -0
- package/dist/es5/csv/stream-converter.js.map +1 -0
- package/dist/es5/doc/anchor.js +73 -0
- package/dist/es5/doc/anchor.js.map +1 -0
- package/dist/es5/doc/cell.js +951 -0
- package/dist/es5/doc/cell.js.map +1 -0
- package/dist/es5/doc/column.js +274 -0
- package/dist/es5/doc/column.js.map +1 -0
- package/dist/es5/doc/data-validations.js +18 -0
- package/dist/es5/doc/data-validations.js.map +1 -0
- package/dist/es5/doc/defined-names.js +171 -0
- package/dist/es5/doc/defined-names.js.map +1 -0
- package/dist/es5/doc/enums.js +49 -0
- package/dist/es5/doc/enums.js.map +1 -0
- package/dist/es5/doc/image.js +67 -0
- package/dist/es5/doc/image.js.map +1 -0
- package/dist/es5/doc/modelcontainer.js +16 -0
- package/dist/es5/doc/modelcontainer.js.map +1 -0
- package/dist/es5/doc/note.js +60 -0
- package/dist/es5/doc/note.js.map +1 -0
- package/dist/es5/doc/pivot-table.js +132 -0
- package/dist/es5/doc/pivot-table.js.map +1 -0
- package/dist/es5/doc/range.js +225 -0
- package/dist/es5/doc/range.js.map +1 -0
- package/dist/es5/doc/row.js +381 -0
- package/dist/es5/doc/row.js.map +1 -0
- package/dist/es5/doc/table.js +428 -0
- package/dist/es5/doc/table.js.map +1 -0
- package/dist/es5/doc/workbook.js +203 -0
- package/dist/es5/doc/workbook.js.map +1 -0
- package/dist/es5/doc/worksheet.js +911 -0
- package/dist/es5/doc/worksheet.js.map +1 -0
- package/dist/es5/exceljs.bare.js +14 -0
- package/dist/es5/exceljs.bare.js.map +1 -0
- package/dist/es5/exceljs.browser.js +36 -0
- package/dist/es5/exceljs.browser.js.map +1 -0
- package/dist/es5/exceljs.nodejs.js +15 -0
- package/dist/es5/exceljs.nodejs.js.map +1 -0
- package/dist/es5/index.js +15 -0
- package/dist/es5/stream/xlsx/hyperlink-reader.js +107 -0
- package/dist/es5/stream/xlsx/hyperlink-reader.js.map +1 -0
- package/dist/es5/stream/xlsx/sheet-comments-writer.js +94 -0
- package/dist/es5/stream/xlsx/sheet-comments-writer.js.map +1 -0
- package/dist/es5/stream/xlsx/sheet-rels-writer.js +93 -0
- package/dist/es5/stream/xlsx/sheet-rels-writer.js.map +1 -0
- package/dist/es5/stream/xlsx/workbook-reader.js +461 -0
- package/dist/es5/stream/xlsx/workbook-reader.js.map +1 -0
- package/dist/es5/stream/xlsx/workbook-writer.js +345 -0
- package/dist/es5/stream/xlsx/workbook-writer.js.map +1 -0
- package/dist/es5/stream/xlsx/worksheet-reader.js +459 -0
- package/dist/es5/stream/xlsx/worksheet-reader.js.map +1 -0
- package/dist/es5/stream/xlsx/worksheet-writer.js +654 -0
- package/dist/es5/stream/xlsx/worksheet-writer.js.map +1 -0
- package/dist/es5/utils/auto-drain.js +17 -0
- package/dist/es5/utils/auto-drain.js.map +1 -0
- package/dist/es5/utils/browser-buffer-decode.js +15 -0
- package/dist/es5/utils/browser-buffer-decode.js.map +1 -0
- package/dist/es5/utils/browser-buffer-encode.js +17 -0
- package/dist/es5/utils/browser-buffer-encode.js.map +1 -0
- package/dist/es5/utils/cell-matrix.js +145 -0
- package/dist/es5/utils/cell-matrix.js.map +1 -0
- package/dist/es5/utils/col-cache.js +274 -0
- package/dist/es5/utils/col-cache.js.map +1 -0
- package/dist/es5/utils/copy-style.js +41 -0
- package/dist/es5/utils/copy-style.js.map +1 -0
- package/dist/es5/utils/encryptor.js +58 -0
- package/dist/es5/utils/encryptor.js.map +1 -0
- package/dist/es5/utils/iterate-stream.js +57 -0
- package/dist/es5/utils/iterate-stream.js.map +1 -0
- package/dist/es5/utils/parse-sax.js +77 -0
- package/dist/es5/utils/parse-sax.js.map +1 -0
- package/dist/es5/utils/shared-formula.js +42 -0
- package/dist/es5/utils/shared-formula.js.map +1 -0
- package/dist/es5/utils/shared-strings.js +32 -0
- package/dist/es5/utils/shared-strings.js.map +1 -0
- package/dist/es5/utils/stream-base64.js +66 -0
- package/dist/es5/utils/stream-base64.js.map +1 -0
- package/dist/es5/utils/stream-buf.js +343 -0
- package/dist/es5/utils/stream-buf.js.map +1 -0
- package/dist/es5/utils/string-buf.js +73 -0
- package/dist/es5/utils/string-buf.js.map +1 -0
- package/dist/es5/utils/string-builder.js +32 -0
- package/dist/es5/utils/string-builder.js.map +1 -0
- package/dist/es5/utils/stuttered-pipe.js +61 -0
- package/dist/es5/utils/stuttered-pipe.js.map +1 -0
- package/dist/es5/utils/typed-stack.js +23 -0
- package/dist/es5/utils/typed-stack.js.map +1 -0
- package/dist/es5/utils/under-dash.js +164 -0
- package/dist/es5/utils/under-dash.js.map +1 -0
- package/dist/es5/utils/utils.js +204 -0
- package/dist/es5/utils/utils.js.map +1 -0
- package/dist/es5/utils/xml-stream.js +151 -0
- package/dist/es5/utils/xml-stream.js.map +1 -0
- package/dist/es5/utils/zip-stream.js +78 -0
- package/dist/es5/utils/zip-stream.js.map +1 -0
- package/dist/es5/xlsx/defaultnumformats.js +230 -0
- package/dist/es5/xlsx/defaultnumformats.js.map +1 -0
- package/dist/es5/xlsx/rel-type.js +21 -0
- package/dist/es5/xlsx/rel-type.js.map +1 -0
- package/dist/es5/xlsx/xform/base-xform.js +161 -0
- package/dist/es5/xlsx/xform/base-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/book/defined-name-xform.js +85 -0
- package/dist/es5/xlsx/xform/book/defined-name-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/book/sheet-xform.js +32 -0
- package/dist/es5/xlsx/xform/book/sheet-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js +24 -0
- package/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/book/workbook-pivot-cache-xform.js +27 -0
- package/dist/es5/xlsx/xform/book/workbook-pivot-cache-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/book/workbook-properties-xform.js +27 -0
- package/dist/es5/xlsx/xform/book/workbook-properties-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/book/workbook-view-xform.js +51 -0
- package/dist/es5/xlsx/xform/book/workbook-view-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/book/workbook-xform.js +241 -0
- package/dist/es5/xlsx/xform/book/workbook-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/comment/comment-xform.js +107 -0
- package/dist/es5/xlsx/xform/comment/comment-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/comment/comments-xform.js +76 -0
- package/dist/es5/xlsx/xform/comment/comments-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/comment/style/vml-position-xform.js +35 -0
- package/dist/es5/xlsx/xform/comment/style/vml-position-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js +32 -0
- package/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/comment/vml-anchor-xform.js +53 -0
- package/dist/es5/xlsx/xform/comment/vml-anchor-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/comment/vml-client-data-xform.js +96 -0
- package/dist/es5/xlsx/xform/comment/vml-client-data-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/comment/vml-notes-xform.js +107 -0
- package/dist/es5/xlsx/xform/comment/vml-notes-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/comment/vml-shape-xform.js +92 -0
- package/dist/es5/xlsx/xform/comment/vml-shape-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/comment/vml-textbox-xform.js +60 -0
- package/dist/es5/xlsx/xform/comment/vml-textbox-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/composite-xform.js +51 -0
- package/dist/es5/xlsx/xform/composite-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js +30 -0
- package/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js +27 -0
- package/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/core/app-xform.js +93 -0
- package/dist/es5/xlsx/xform/core/app-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/core/content-types-xform.js +125 -0
- package/dist/es5/xlsx/xform/core/content-types-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/core/core-xform.js +158 -0
- package/dist/es5/xlsx/xform/core/core-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/core/relationship-xform.js +23 -0
- package/dist/es5/xlsx/xform/core/relationship-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/core/relationships-xform.js +65 -0
- package/dist/es5/xlsx/xform/core/relationships-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js +47 -0
- package/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/blip-fill-xform.js +61 -0
- package/dist/es5/xlsx/xform/drawing/blip-fill-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/blip-xform.js +39 -0
- package/dist/es5/xlsx/xform/drawing/blip-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js +35 -0
- package/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js +62 -0
- package/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/cell-position-xform.js +82 -0
- package/dist/es5/xlsx/xform/drawing/cell-position-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/drawing-xform.js +98 -0
- package/dist/es5/xlsx/xform/drawing/drawing-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/ext-lst-xform.js +40 -0
- package/dist/es5/xlsx/xform/drawing/ext-lst-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/ext-xform.js +38 -0
- package/dist/es5/xlsx/xform/drawing/ext-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/hlink-click-xform.js +38 -0
- package/dist/es5/xlsx/xform/drawing/hlink-click-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js +59 -0
- package/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js +63 -0
- package/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/pic-xform.js +67 -0
- package/dist/es5/xlsx/xform/drawing/pic-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/sp-pr.js +30 -0
- package/dist/es5/xlsx/xform/drawing/sp-pr.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js +62 -0
- package/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/list-xform.js +85 -0
- package/dist/es5/xlsx/xform/list-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/pivot-table/cache-field.js +40 -0
- package/dist/es5/xlsx/xform/pivot-table/cache-field.js.map +1 -0
- package/dist/es5/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +75 -0
- package/dist/es5/xlsx/xform/pivot-table/pivot-cache-definition-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/pivot-table/pivot-cache-records-xform.js +104 -0
- package/dist/es5/xlsx/xform/pivot-table/pivot-cache-records-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/pivot-table/pivot-table-xform.js +114 -0
- package/dist/es5/xlsx/xform/pivot-table/pivot-table-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/auto-filter-xform.js +40 -0
- package/dist/es5/xlsx/xform/sheet/auto-filter-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cell-xform.js +452 -0
- package/dist/es5/xlsx/xform/sheet/cell-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js +271 -0
- package/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js +25 -0
- package/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js +38 -0
- package/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js +43 -0
- package/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js +77 -0
- package/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf/databar-xform.js +42 -0
- package/dist/es5/xlsx/xform/sheet/cf/databar-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +71 -0
- package/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf/formula-xform.js +22 -0
- package/dist/es5/xlsx/xform/sheet/cf/formula-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js +41 -0
- package/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +26 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +85 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +38 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +52 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +43 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +81 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js +22 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +72 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +22 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/col-xform.js +78 -0
- package/dist/es5/xlsx/xform/sheet/col-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/data-validations-xform.js +249 -0
- package/dist/es5/xlsx/xform/sheet/data-validations-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/dimension-xform.js +28 -0
- package/dist/es5/xlsx/xform/sheet/dimension-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/drawing-xform.js +32 -0
- package/dist/es5/xlsx/xform/sheet/drawing-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/ext-lst-xform.js +69 -0
- package/dist/es5/xlsx/xform/sheet/ext-lst-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/header-footer-xform.js +126 -0
- package/dist/es5/xlsx/xform/sheet/header-footer-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/hyperlink-xform.js +50 -0
- package/dist/es5/xlsx/xform/sheet/hyperlink-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/merge-cell-xform.js +26 -0
- package/dist/es5/xlsx/xform/sheet/merge-cell-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/merges.js +52 -0
- package/dist/es5/xlsx/xform/sheet/merges.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/outline-properties-xform.js +35 -0
- package/dist/es5/xlsx/xform/sheet/outline-properties-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/page-breaks-xform.js +24 -0
- package/dist/es5/xlsx/xform/sheet/page-breaks-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/page-margins-xform.js +46 -0
- package/dist/es5/xlsx/xform/sheet/page-margins-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js +32 -0
- package/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/page-setup-xform.js +99 -0
- package/dist/es5/xlsx/xform/sheet/page-setup-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/picture-xform.js +32 -0
- package/dist/es5/xlsx/xform/sheet/picture-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/print-options-xform.js +45 -0
- package/dist/es5/xlsx/xform/sheet/print-options-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/row-breaks-xform.js +35 -0
- package/dist/es5/xlsx/xform/sheet/row-breaks-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/row-xform.js +128 -0
- package/dist/es5/xlsx/xform/sheet/row-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js +51 -0
- package/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js +83 -0
- package/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js +84 -0
- package/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/sheet-view-xform.js +190 -0
- package/dist/es5/xlsx/xform/sheet/sheet-view-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/table-part-xform.js +32 -0
- package/dist/es5/xlsx/xform/sheet/table-part-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/worksheet-xform.js +515 -0
- package/dist/es5/xlsx/xform/sheet/worksheet-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/simple/boolean-xform.js +27 -0
- package/dist/es5/xlsx/xform/simple/boolean-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/simple/date-xform.js +58 -0
- package/dist/es5/xlsx/xform/simple/date-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/simple/float-xform.js +47 -0
- package/dist/es5/xlsx/xform/simple/float-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/simple/integer-xform.js +53 -0
- package/dist/es5/xlsx/xform/simple/integer-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/simple/string-xform.js +47 -0
- package/dist/es5/xlsx/xform/simple/string-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/static-xform.js +61 -0
- package/dist/es5/xlsx/xform/static-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/strings/phonetic-text-xform.js +94 -0
- package/dist/es5/xlsx/xform/strings/phonetic-text-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/strings/rich-text-xform.js +92 -0
- package/dist/es5/xlsx/xform/strings/rich-text-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/strings/shared-string-xform.js +100 -0
- package/dist/es5/xlsx/xform/strings/shared-string-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/strings/shared-strings-xform.js +114 -0
- package/dist/es5/xlsx/xform/strings/shared-strings-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/strings/text-xform.js +39 -0
- package/dist/es5/xlsx/xform/strings/text-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/style/alignment-xform.js +139 -0
- package/dist/es5/xlsx/xform/style/alignment-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/style/border-xform.js +185 -0
- package/dist/es5/xlsx/xform/style/border-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/style/color-xform.js +66 -0
- package/dist/es5/xlsx/xform/style/color-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/style/dxf-xform.js +106 -0
- package/dist/es5/xlsx/xform/style/dxf-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/style/fill-xform.js +307 -0
- package/dist/es5/xlsx/xform/style/fill-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/style/font-xform.js +173 -0
- package/dist/es5/xlsx/xform/style/font-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/style/numfmt-xform.js +58 -0
- package/dist/es5/xlsx/xform/style/numfmt-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/style/protection-xform.js +53 -0
- package/dist/es5/xlsx/xform/style/protection-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/style/style-xform.js +118 -0
- package/dist/es5/xlsx/xform/style/style-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/style/styles-xform.js +611 -0
- package/dist/es5/xlsx/xform/style/styles-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/style/underline-xform.js +46 -0
- package/dist/es5/xlsx/xform/style/underline-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/table/auto-filter-xform.js +75 -0
- package/dist/es5/xlsx/xform/table/auto-filter-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/table/custom-filter-xform.js +30 -0
- package/dist/es5/xlsx/xform/table/custom-filter-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/table/filter-column-xform.js +87 -0
- package/dist/es5/xlsx/xform/table/filter-column-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/table/filter-xform.js +28 -0
- package/dist/es5/xlsx/xform/table/filter-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/table/table-column-xform.js +40 -0
- package/dist/es5/xlsx/xform/table/table-column-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/table/table-style-info-xform.js +38 -0
- package/dist/es5/xlsx/xform/table/table-style-info-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/table/table-xform.js +124 -0
- package/dist/es5/xlsx/xform/table/table-xform.js.map +1 -0
- package/dist/es5/xlsx/xlsx.js +788 -0
- package/dist/es5/xlsx/xlsx.js.map +1 -0
- package/dist/es5/xlsx/xml/theme1.js +5 -0
- package/dist/es5/xlsx/xml/theme1.js.map +1 -0
- package/dist/exceljs.bare.js +60711 -0
- package/dist/exceljs.bare.js.map +883 -0
- package/dist/exceljs.bare.min.js +45 -0
- package/dist/exceljs.bare.min.js.map +1 -0
- package/dist/exceljs.js +65487 -0
- package/dist/exceljs.js.map +1207 -0
- package/dist/exceljs.min.js +45 -0
- package/dist/exceljs.min.js.map +1 -0
- package/lib/xlsx/xform/strings/shared-string-xform.js +4 -1
- package/package.json +1 -1
|
@@ -0,0 +1,461 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
6
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
7
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
8
|
+
function _asyncGeneratorDelegate(t) { var e = {}, n = !1; function pump(e, r) { return n = !0, r = new Promise(function (n) { n(t[e](r)); }), { done: !1, value: new _OverloadYield(r, 1) }; } return e["undefined" != typeof Symbol && Symbol.iterator || "@@iterator"] = function () { return this; }, e.next = function (t) { return n ? (n = !1, t) : pump("next", t); }, "function" == typeof t.throw && (e.throw = function (t) { if (n) throw n = !1, t; return pump("throw", t); }), "function" == typeof t.return && (e.return = function (t) { return n ? (n = !1, t) : pump("return", t); }), e; }
|
|
9
|
+
function _awaitAsyncGenerator(e) { return new _OverloadYield(e, 0); }
|
|
10
|
+
function _wrapAsyncGenerator(e) { return function () { return new AsyncGenerator(e.apply(this, arguments)); }; }
|
|
11
|
+
function AsyncGenerator(e) { var t, n; function resume(t, n) { try { var r = e[t](n), o = r.value, u = o instanceof _OverloadYield; Promise.resolve(u ? o.v : o).then(function (n) { if (u) { var i = "return" === t && o.k ? t : "next"; if (!o.k || n.done) return resume(i, n); n = e[i](n).value; } settle(!!r.done, n); }, function (e) { resume("throw", e); }); } catch (e) { settle(2, e); } } function settle(e, r) { 2 === e ? t.reject(r) : t.resolve({ value: r, done: e }), (t = t.next) ? resume(t.key, t.arg) : n = null; } this._invoke = function (e, r) { return new Promise(function (o, u) { var i = { key: e, arg: r, resolve: o, reject: u, next: null }; n ? n = n.next = i : (t = n = i, resume(e, r)); }); }, "function" != typeof e.return && (this.return = void 0); }
|
|
12
|
+
AsyncGenerator.prototype["function" == typeof Symbol && Symbol.asyncIterator || "@@asyncIterator"] = function () { return this; }, AsyncGenerator.prototype.next = function (e) { return this._invoke("next", e); }, AsyncGenerator.prototype.throw = function (e) { return this._invoke("throw", e); }, AsyncGenerator.prototype.return = function (e) { return this._invoke("return", e); };
|
|
13
|
+
function _OverloadYield(e, d) { this.v = e, this.k = d; }
|
|
14
|
+
function _asyncIterator(r) { var n, t, o, e = 2; for ("undefined" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) { if (t && null != (n = r[t])) return n.call(r); if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r)); t = "@@asyncIterator", o = "@@iterator"; } throw new TypeError("Object is not async iterable"); }
|
|
15
|
+
function AsyncFromSyncIterator(r) { function AsyncFromSyncIteratorContinuation(r) { if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object.")); var n = r.done; return Promise.resolve(r.value).then(function (r) { return { value: r, done: n }; }); } return AsyncFromSyncIterator = function (r) { this.s = r, this.n = r.next; }, AsyncFromSyncIterator.prototype = { s: null, n: null, next: function () { return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments)); }, return: function (r) { var n = this.s.return; return void 0 === n ? Promise.resolve({ value: r, done: !0 }) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments)); }, throw: function (r) { var n = this.s.return; return void 0 === n ? Promise.reject(r) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments)); } }, new AsyncFromSyncIterator(r); }
|
|
16
|
+
const fs = require('fs');
|
|
17
|
+
const _require = require('events'),
|
|
18
|
+
EventEmitter = _require.EventEmitter;
|
|
19
|
+
const _require2 = require('readable-stream'),
|
|
20
|
+
PassThrough = _require2.PassThrough,
|
|
21
|
+
Readable = _require2.Readable;
|
|
22
|
+
const nodeStream = require('stream');
|
|
23
|
+
const unzip = require('unzipper');
|
|
24
|
+
const tmp = require('tmp');
|
|
25
|
+
const iterateStream = require('../../utils/iterate-stream');
|
|
26
|
+
const parseSax = require('../../utils/parse-sax');
|
|
27
|
+
const StyleManager = require('../../xlsx/xform/style/styles-xform');
|
|
28
|
+
const WorkbookXform = require('../../xlsx/xform/book/workbook-xform');
|
|
29
|
+
const RelationshipsXform = require('../../xlsx/xform/core/relationships-xform');
|
|
30
|
+
const WorksheetReader = require('./worksheet-reader');
|
|
31
|
+
const HyperlinkReader = require('./hyperlink-reader');
|
|
32
|
+
tmp.setGracefulCleanup();
|
|
33
|
+
class WorkbookReader extends EventEmitter {
|
|
34
|
+
constructor(input) {
|
|
35
|
+
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
36
|
+
super();
|
|
37
|
+
this.input = input;
|
|
38
|
+
this.options = _objectSpread({
|
|
39
|
+
worksheets: 'emit',
|
|
40
|
+
sharedStrings: 'cache',
|
|
41
|
+
hyperlinks: 'ignore',
|
|
42
|
+
styles: 'ignore',
|
|
43
|
+
entries: 'ignore'
|
|
44
|
+
}, options);
|
|
45
|
+
this.styles = new StyleManager();
|
|
46
|
+
this.styles.init();
|
|
47
|
+
}
|
|
48
|
+
_getStream(input) {
|
|
49
|
+
if (input instanceof nodeStream.Readable || input instanceof Readable) {
|
|
50
|
+
return input;
|
|
51
|
+
}
|
|
52
|
+
if (typeof input === 'string') {
|
|
53
|
+
return fs.createReadStream(input);
|
|
54
|
+
}
|
|
55
|
+
throw new Error("Could not recognise input: ".concat(input));
|
|
56
|
+
}
|
|
57
|
+
async read(input, options) {
|
|
58
|
+
try {
|
|
59
|
+
var _iteratorAbruptCompletion = false;
|
|
60
|
+
var _didIteratorError = false;
|
|
61
|
+
var _iteratorError;
|
|
62
|
+
try {
|
|
63
|
+
for (var _iterator = _asyncIterator(this.parse(input, options)), _step; _iteratorAbruptCompletion = !(_step = await _iterator.next()).done; _iteratorAbruptCompletion = false) {
|
|
64
|
+
const _step$value = _step.value,
|
|
65
|
+
eventType = _step$value.eventType,
|
|
66
|
+
value = _step$value.value;
|
|
67
|
+
{
|
|
68
|
+
switch (eventType) {
|
|
69
|
+
case 'shared-strings':
|
|
70
|
+
this.emit(eventType, value);
|
|
71
|
+
break;
|
|
72
|
+
case 'worksheet':
|
|
73
|
+
this.emit(eventType, value);
|
|
74
|
+
await value.read();
|
|
75
|
+
break;
|
|
76
|
+
case 'hyperlinks':
|
|
77
|
+
this.emit(eventType, value);
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
} catch (err) {
|
|
83
|
+
_didIteratorError = true;
|
|
84
|
+
_iteratorError = err;
|
|
85
|
+
} finally {
|
|
86
|
+
try {
|
|
87
|
+
if (_iteratorAbruptCompletion && _iterator.return != null) {
|
|
88
|
+
await _iterator.return();
|
|
89
|
+
}
|
|
90
|
+
} finally {
|
|
91
|
+
if (_didIteratorError) {
|
|
92
|
+
throw _iteratorError;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
this.emit('end');
|
|
97
|
+
this.emit('finished');
|
|
98
|
+
} catch (error) {
|
|
99
|
+
this.emit('error', error);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
[Symbol.asyncIterator]() {
|
|
103
|
+
var _this = this;
|
|
104
|
+
return _wrapAsyncGenerator(function* () {
|
|
105
|
+
var _iteratorAbruptCompletion2 = false;
|
|
106
|
+
var _didIteratorError2 = false;
|
|
107
|
+
var _iteratorError2;
|
|
108
|
+
try {
|
|
109
|
+
for (var _iterator2 = _asyncIterator(_this.parse()), _step2; _iteratorAbruptCompletion2 = !(_step2 = yield _awaitAsyncGenerator(_iterator2.next())).done; _iteratorAbruptCompletion2 = false) {
|
|
110
|
+
const _step2$value = _step2.value,
|
|
111
|
+
eventType = _step2$value.eventType,
|
|
112
|
+
value = _step2$value.value;
|
|
113
|
+
{
|
|
114
|
+
if (eventType === 'worksheet') {
|
|
115
|
+
yield value;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
} catch (err) {
|
|
120
|
+
_didIteratorError2 = true;
|
|
121
|
+
_iteratorError2 = err;
|
|
122
|
+
} finally {
|
|
123
|
+
try {
|
|
124
|
+
if (_iteratorAbruptCompletion2 && _iterator2.return != null) {
|
|
125
|
+
yield _awaitAsyncGenerator(_iterator2.return());
|
|
126
|
+
}
|
|
127
|
+
} finally {
|
|
128
|
+
if (_didIteratorError2) {
|
|
129
|
+
throw _iteratorError2;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
})();
|
|
134
|
+
}
|
|
135
|
+
parse(input, options) {
|
|
136
|
+
var _this2 = this;
|
|
137
|
+
return _wrapAsyncGenerator(function* () {
|
|
138
|
+
if (options) _this2.options = options;
|
|
139
|
+
const stream = _this2.stream = _this2._getStream(input || _this2.input);
|
|
140
|
+
const zip = unzip.Parse({
|
|
141
|
+
forceStream: true
|
|
142
|
+
});
|
|
143
|
+
stream.pipe(zip);
|
|
144
|
+
|
|
145
|
+
// worksheets, deferred for parsing after shared strings reading
|
|
146
|
+
const waitingWorkSheets = [];
|
|
147
|
+
var _iteratorAbruptCompletion3 = false;
|
|
148
|
+
var _didIteratorError3 = false;
|
|
149
|
+
var _iteratorError3;
|
|
150
|
+
try {
|
|
151
|
+
for (var _iterator3 = _asyncIterator(iterateStream(zip)), _step3; _iteratorAbruptCompletion3 = !(_step3 = yield _awaitAsyncGenerator(_iterator3.next())).done; _iteratorAbruptCompletion3 = false) {
|
|
152
|
+
const entry = _step3.value;
|
|
153
|
+
{
|
|
154
|
+
let match;
|
|
155
|
+
let sheetNo;
|
|
156
|
+
switch (entry.path) {
|
|
157
|
+
case '_rels/.rels':
|
|
158
|
+
break;
|
|
159
|
+
case 'xl/_rels/workbook.xml.rels':
|
|
160
|
+
yield _awaitAsyncGenerator(_this2._parseRels(entry));
|
|
161
|
+
break;
|
|
162
|
+
case 'xl/workbook.xml':
|
|
163
|
+
yield _awaitAsyncGenerator(_this2._parseWorkbook(entry));
|
|
164
|
+
break;
|
|
165
|
+
case 'xl/sharedStrings.xml':
|
|
166
|
+
yield* _asyncGeneratorDelegate(_asyncIterator(_this2._parseSharedStrings(entry)), _awaitAsyncGenerator);
|
|
167
|
+
break;
|
|
168
|
+
case 'xl/styles.xml':
|
|
169
|
+
yield _awaitAsyncGenerator(_this2._parseStyles(entry));
|
|
170
|
+
break;
|
|
171
|
+
default:
|
|
172
|
+
if (entry.path.match(/xl\/worksheets\/sheet\d+[.]xml/)) {
|
|
173
|
+
match = entry.path.match(/xl\/worksheets\/sheet(\d+)[.]xml/);
|
|
174
|
+
sheetNo = match[1];
|
|
175
|
+
if (_this2.sharedStrings && _this2.workbookRels) {
|
|
176
|
+
yield* _asyncGeneratorDelegate(_asyncIterator(_this2._parseWorksheet(iterateStream(entry), sheetNo)), _awaitAsyncGenerator);
|
|
177
|
+
} else {
|
|
178
|
+
// create temp file for each worksheet
|
|
179
|
+
yield _awaitAsyncGenerator(new Promise((resolve, reject) => {
|
|
180
|
+
tmp.file((err, path, fd, tempFileCleanupCallback) => {
|
|
181
|
+
if (err) {
|
|
182
|
+
return reject(err);
|
|
183
|
+
}
|
|
184
|
+
waitingWorkSheets.push({
|
|
185
|
+
sheetNo,
|
|
186
|
+
path,
|
|
187
|
+
tempFileCleanupCallback
|
|
188
|
+
});
|
|
189
|
+
const tempStream = fs.createWriteStream(path);
|
|
190
|
+
tempStream.on('error', reject);
|
|
191
|
+
entry.pipe(tempStream);
|
|
192
|
+
return tempStream.on('finish', () => {
|
|
193
|
+
return resolve();
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
}));
|
|
197
|
+
}
|
|
198
|
+
} else if (entry.path.match(/xl\/worksheets\/_rels\/sheet\d+[.]xml.rels/)) {
|
|
199
|
+
match = entry.path.match(/xl\/worksheets\/_rels\/sheet(\d+)[.]xml.rels/);
|
|
200
|
+
sheetNo = match[1];
|
|
201
|
+
yield* _asyncGeneratorDelegate(_asyncIterator(_this2._parseHyperlinks(iterateStream(entry), sheetNo)), _awaitAsyncGenerator);
|
|
202
|
+
}
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
entry.autodrain();
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
} catch (err) {
|
|
209
|
+
_didIteratorError3 = true;
|
|
210
|
+
_iteratorError3 = err;
|
|
211
|
+
} finally {
|
|
212
|
+
try {
|
|
213
|
+
if (_iteratorAbruptCompletion3 && _iterator3.return != null) {
|
|
214
|
+
yield _awaitAsyncGenerator(_iterator3.return());
|
|
215
|
+
}
|
|
216
|
+
} finally {
|
|
217
|
+
if (_didIteratorError3) {
|
|
218
|
+
throw _iteratorError3;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
for (const _ref of waitingWorkSheets) {
|
|
223
|
+
const sheetNo = _ref.sheetNo;
|
|
224
|
+
const path = _ref.path;
|
|
225
|
+
const tempFileCleanupCallback = _ref.tempFileCleanupCallback;
|
|
226
|
+
let fileStream = fs.createReadStream(path);
|
|
227
|
+
// TODO: Remove once node v8 is deprecated
|
|
228
|
+
// Detect and upgrade old fileStreams
|
|
229
|
+
if (!fileStream[Symbol.asyncIterator]) {
|
|
230
|
+
fileStream = fileStream.pipe(new PassThrough());
|
|
231
|
+
}
|
|
232
|
+
yield* _asyncGeneratorDelegate(_asyncIterator(_this2._parseWorksheet(fileStream, sheetNo)), _awaitAsyncGenerator);
|
|
233
|
+
tempFileCleanupCallback();
|
|
234
|
+
}
|
|
235
|
+
})();
|
|
236
|
+
}
|
|
237
|
+
_emitEntry(payload) {
|
|
238
|
+
if (this.options.entries === 'emit') {
|
|
239
|
+
this.emit('entry', payload);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
async _parseRels(entry) {
|
|
243
|
+
const xform = new RelationshipsXform();
|
|
244
|
+
this.workbookRels = await xform.parseStream(iterateStream(entry));
|
|
245
|
+
}
|
|
246
|
+
async _parseWorkbook(entry) {
|
|
247
|
+
this._emitEntry({
|
|
248
|
+
type: 'workbook'
|
|
249
|
+
});
|
|
250
|
+
const workbook = new WorkbookXform();
|
|
251
|
+
await workbook.parseStream(iterateStream(entry));
|
|
252
|
+
this.properties = workbook.map.workbookPr;
|
|
253
|
+
this.model = workbook.model;
|
|
254
|
+
}
|
|
255
|
+
_parseSharedStrings(entry) {
|
|
256
|
+
var _this3 = this;
|
|
257
|
+
return _wrapAsyncGenerator(function* () {
|
|
258
|
+
_this3._emitEntry({
|
|
259
|
+
type: 'shared-strings'
|
|
260
|
+
});
|
|
261
|
+
switch (_this3.options.sharedStrings) {
|
|
262
|
+
case 'cache':
|
|
263
|
+
_this3.sharedStrings = [];
|
|
264
|
+
break;
|
|
265
|
+
case 'emit':
|
|
266
|
+
break;
|
|
267
|
+
default:
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
let text = null;
|
|
271
|
+
let richText = [];
|
|
272
|
+
let index = 0;
|
|
273
|
+
let font = null;
|
|
274
|
+
var _iteratorAbruptCompletion4 = false;
|
|
275
|
+
var _didIteratorError4 = false;
|
|
276
|
+
var _iteratorError4;
|
|
277
|
+
try {
|
|
278
|
+
for (var _iterator4 = _asyncIterator(parseSax(iterateStream(entry))), _step4; _iteratorAbruptCompletion4 = !(_step4 = yield _awaitAsyncGenerator(_iterator4.next())).done; _iteratorAbruptCompletion4 = false) {
|
|
279
|
+
const events = _step4.value;
|
|
280
|
+
{
|
|
281
|
+
for (const _ref2 of events) {
|
|
282
|
+
const eventType = _ref2.eventType;
|
|
283
|
+
const value = _ref2.value;
|
|
284
|
+
if (eventType === 'opentag') {
|
|
285
|
+
const node = value;
|
|
286
|
+
switch (node.name) {
|
|
287
|
+
case 'b':
|
|
288
|
+
font = font || {};
|
|
289
|
+
font.bold = true;
|
|
290
|
+
break;
|
|
291
|
+
case 'charset':
|
|
292
|
+
font = font || {};
|
|
293
|
+
font.charset = parseInt(node.attributes.charset, 10);
|
|
294
|
+
break;
|
|
295
|
+
case 'color':
|
|
296
|
+
font = font || {};
|
|
297
|
+
font.color = {};
|
|
298
|
+
if (node.attributes.rgb) {
|
|
299
|
+
font.color.argb = node.attributes.argb;
|
|
300
|
+
}
|
|
301
|
+
if (node.attributes.val) {
|
|
302
|
+
font.color.argb = node.attributes.val;
|
|
303
|
+
}
|
|
304
|
+
if (node.attributes.theme) {
|
|
305
|
+
font.color.theme = node.attributes.theme;
|
|
306
|
+
}
|
|
307
|
+
break;
|
|
308
|
+
case 'family':
|
|
309
|
+
font = font || {};
|
|
310
|
+
font.family = parseInt(node.attributes.val, 10);
|
|
311
|
+
break;
|
|
312
|
+
case 'i':
|
|
313
|
+
font = font || {};
|
|
314
|
+
font.italic = true;
|
|
315
|
+
break;
|
|
316
|
+
case 'outline':
|
|
317
|
+
font = font || {};
|
|
318
|
+
font.outline = true;
|
|
319
|
+
break;
|
|
320
|
+
case 'rFont':
|
|
321
|
+
font = font || {};
|
|
322
|
+
font.name = node.value;
|
|
323
|
+
break;
|
|
324
|
+
case 'si':
|
|
325
|
+
font = null;
|
|
326
|
+
richText = [];
|
|
327
|
+
text = null;
|
|
328
|
+
break;
|
|
329
|
+
case 'sz':
|
|
330
|
+
font = font || {};
|
|
331
|
+
font.size = parseInt(node.attributes.val, 10);
|
|
332
|
+
break;
|
|
333
|
+
case 'strike':
|
|
334
|
+
break;
|
|
335
|
+
case 't':
|
|
336
|
+
text = null;
|
|
337
|
+
break;
|
|
338
|
+
case 'u':
|
|
339
|
+
font = font || {};
|
|
340
|
+
font.underline = true;
|
|
341
|
+
break;
|
|
342
|
+
case 'vertAlign':
|
|
343
|
+
font = font || {};
|
|
344
|
+
font.vertAlign = node.attributes.val;
|
|
345
|
+
break;
|
|
346
|
+
}
|
|
347
|
+
} else if (eventType === 'text') {
|
|
348
|
+
text = text ? text + value : value;
|
|
349
|
+
} else if (eventType === 'closetag') {
|
|
350
|
+
const node = value;
|
|
351
|
+
switch (node.name) {
|
|
352
|
+
case 'r':
|
|
353
|
+
richText.push({
|
|
354
|
+
font,
|
|
355
|
+
text
|
|
356
|
+
});
|
|
357
|
+
font = null;
|
|
358
|
+
text = null;
|
|
359
|
+
break;
|
|
360
|
+
case 'si':
|
|
361
|
+
if (_this3.options.sharedStrings === 'cache') {
|
|
362
|
+
_this3.sharedStrings.push(richText.length ? {
|
|
363
|
+
richText
|
|
364
|
+
} : text);
|
|
365
|
+
} else if (_this3.options.sharedStrings === 'emit') {
|
|
366
|
+
yield {
|
|
367
|
+
index: index++,
|
|
368
|
+
text: richText.length ? {
|
|
369
|
+
richText
|
|
370
|
+
} : text
|
|
371
|
+
};
|
|
372
|
+
}
|
|
373
|
+
richText = [];
|
|
374
|
+
font = null;
|
|
375
|
+
text = null;
|
|
376
|
+
break;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
} catch (err) {
|
|
383
|
+
_didIteratorError4 = true;
|
|
384
|
+
_iteratorError4 = err;
|
|
385
|
+
} finally {
|
|
386
|
+
try {
|
|
387
|
+
if (_iteratorAbruptCompletion4 && _iterator4.return != null) {
|
|
388
|
+
yield _awaitAsyncGenerator(_iterator4.return());
|
|
389
|
+
}
|
|
390
|
+
} finally {
|
|
391
|
+
if (_didIteratorError4) {
|
|
392
|
+
throw _iteratorError4;
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
})();
|
|
397
|
+
}
|
|
398
|
+
async _parseStyles(entry) {
|
|
399
|
+
this._emitEntry({
|
|
400
|
+
type: 'styles'
|
|
401
|
+
});
|
|
402
|
+
if (this.options.styles === 'cache') {
|
|
403
|
+
this.styles = new StyleManager();
|
|
404
|
+
await this.styles.parseStream(iterateStream(entry));
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
*_parseWorksheet(iterator, sheetNo) {
|
|
408
|
+
this._emitEntry({
|
|
409
|
+
type: 'worksheet',
|
|
410
|
+
id: sheetNo
|
|
411
|
+
});
|
|
412
|
+
const worksheetReader = new WorksheetReader({
|
|
413
|
+
workbook: this,
|
|
414
|
+
id: sheetNo,
|
|
415
|
+
iterator,
|
|
416
|
+
options: this.options
|
|
417
|
+
});
|
|
418
|
+
const matchingRel = (this.workbookRels || []).find(rel => rel.Target === "worksheets/sheet".concat(sheetNo, ".xml"));
|
|
419
|
+
const matchingSheet = matchingRel && (this.model.sheets || []).find(sheet => sheet.rId === matchingRel.Id);
|
|
420
|
+
if (matchingSheet) {
|
|
421
|
+
worksheetReader.id = matchingSheet.id;
|
|
422
|
+
worksheetReader.name = matchingSheet.name;
|
|
423
|
+
worksheetReader.state = matchingSheet.state;
|
|
424
|
+
}
|
|
425
|
+
if (this.options.worksheets === 'emit') {
|
|
426
|
+
yield {
|
|
427
|
+
eventType: 'worksheet',
|
|
428
|
+
value: worksheetReader
|
|
429
|
+
};
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
*_parseHyperlinks(iterator, sheetNo) {
|
|
433
|
+
this._emitEntry({
|
|
434
|
+
type: 'hyperlinks',
|
|
435
|
+
id: sheetNo
|
|
436
|
+
});
|
|
437
|
+
const hyperlinksReader = new HyperlinkReader({
|
|
438
|
+
workbook: this,
|
|
439
|
+
id: sheetNo,
|
|
440
|
+
iterator,
|
|
441
|
+
options: this.options
|
|
442
|
+
});
|
|
443
|
+
if (this.options.hyperlinks === 'emit') {
|
|
444
|
+
yield {
|
|
445
|
+
eventType: 'hyperlinks',
|
|
446
|
+
value: hyperlinksReader
|
|
447
|
+
};
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
// for reference - these are the valid values for options
|
|
453
|
+
WorkbookReader.Options = {
|
|
454
|
+
worksheets: ['emit', 'ignore'],
|
|
455
|
+
sharedStrings: ['cache', 'emit', 'ignore'],
|
|
456
|
+
hyperlinks: ['cache', 'emit', 'ignore'],
|
|
457
|
+
styles: ['cache', 'ignore'],
|
|
458
|
+
entries: ['emit', 'ignore']
|
|
459
|
+
};
|
|
460
|
+
module.exports = WorkbookReader;
|
|
461
|
+
//# sourceMappingURL=workbook-reader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workbook-reader.js","names":["fs","require","_require","EventEmitter","_require2","PassThrough","Readable","nodeStream","unzip","tmp","iterateStream","parseSax","StyleManager","WorkbookXform","RelationshipsXform","WorksheetReader","HyperlinkReader","setGracefulCleanup","WorkbookReader","constructor","input","options","arguments","length","undefined","_objectSpread","worksheets","sharedStrings","hyperlinks","styles","entries","init","_getStream","createReadStream","Error","concat","read","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_iterator","_asyncIterator","parse","_step","next","done","_step$value","value","eventType","emit","err","return","error","Symbol","asyncIterator","_this","_wrapAsyncGenerator","_iteratorAbruptCompletion2","_didIteratorError2","_iteratorError2","_iterator2","_step2","_awaitAsyncGenerator","_step2$value","_this2","stream","zip","Parse","forceStream","pipe","waitingWorkSheets","_iteratorAbruptCompletion3","_didIteratorError3","_iteratorError3","_iterator3","_step3","entry","match","sheetNo","path","_parseRels","_parseWorkbook","_asyncGeneratorDelegate","_parseSharedStrings","_parseStyles","workbookRels","_parseWorksheet","Promise","resolve","reject","file","fd","tempFileCleanupCallback","push","tempStream","createWriteStream","on","_parseHyperlinks","autodrain","_ref","fileStream","_emitEntry","payload","xform","parseStream","type","workbook","properties","map","workbookPr","model","_this3","text","richText","index","font","_iteratorAbruptCompletion4","_didIteratorError4","_iteratorError4","_iterator4","_step4","events","_ref2","node","name","bold","charset","parseInt","attributes","color","rgb","argb","val","theme","family","italic","outline","size","underline","vertAlign","iterator","id","worksheetReader","matchingRel","find","rel","Target","matchingSheet","sheets","sheet","rId","Id","state","hyperlinksReader","Options","module","exports"],"sources":["../../../../lib/stream/xlsx/workbook-reader.js"],"sourcesContent":["const fs = require('fs');\nconst {EventEmitter} = require('events');\nconst {PassThrough, Readable} = require('readable-stream');\nconst nodeStream = require('stream');\nconst unzip = require('unzipper');\nconst tmp = require('tmp');\nconst iterateStream = require('../../utils/iterate-stream');\nconst parseSax = require('../../utils/parse-sax');\n\nconst StyleManager = require('../../xlsx/xform/style/styles-xform');\nconst WorkbookXform = require('../../xlsx/xform/book/workbook-xform');\nconst RelationshipsXform = require('../../xlsx/xform/core/relationships-xform');\n\nconst WorksheetReader = require('./worksheet-reader');\nconst HyperlinkReader = require('./hyperlink-reader');\n\ntmp.setGracefulCleanup();\n\nclass WorkbookReader extends EventEmitter {\n constructor(input, options = {}) {\n super();\n\n this.input = input;\n\n this.options = {\n worksheets: 'emit',\n sharedStrings: 'cache',\n hyperlinks: 'ignore',\n styles: 'ignore',\n entries: 'ignore',\n ...options,\n };\n\n this.styles = new StyleManager();\n this.styles.init();\n }\n\n _getStream(input) {\n if (input instanceof nodeStream.Readable || input instanceof Readable) {\n return input;\n }\n if (typeof input === 'string') {\n return fs.createReadStream(input);\n }\n throw new Error(`Could not recognise input: ${input}`);\n }\n\n async read(input, options) {\n try {\n for await (const {eventType, value} of this.parse(input, options)) {\n switch (eventType) {\n case 'shared-strings':\n this.emit(eventType, value);\n break;\n case 'worksheet':\n this.emit(eventType, value);\n await value.read();\n break;\n case 'hyperlinks':\n this.emit(eventType, value);\n break;\n }\n }\n this.emit('end');\n this.emit('finished');\n } catch (error) {\n this.emit('error', error);\n }\n }\n\n async *[Symbol.asyncIterator]() {\n for await (const {eventType, value} of this.parse()) {\n if (eventType === 'worksheet') {\n yield value;\n }\n }\n }\n\n async *parse(input, options) {\n if (options) this.options = options;\n const stream = (this.stream = this._getStream(input || this.input));\n const zip = unzip.Parse({forceStream: true});\n stream.pipe(zip);\n\n // worksheets, deferred for parsing after shared strings reading\n const waitingWorkSheets = [];\n\n for await (const entry of iterateStream(zip)) {\n let match;\n let sheetNo;\n switch (entry.path) {\n case '_rels/.rels':\n break;\n case 'xl/_rels/workbook.xml.rels':\n await this._parseRels(entry);\n break;\n case 'xl/workbook.xml':\n await this._parseWorkbook(entry);\n break;\n case 'xl/sharedStrings.xml':\n yield* this._parseSharedStrings(entry);\n break;\n case 'xl/styles.xml':\n await this._parseStyles(entry);\n break;\n default:\n if (entry.path.match(/xl\\/worksheets\\/sheet\\d+[.]xml/)) {\n match = entry.path.match(/xl\\/worksheets\\/sheet(\\d+)[.]xml/);\n sheetNo = match[1];\n if (this.sharedStrings && this.workbookRels) {\n yield* this._parseWorksheet(iterateStream(entry), sheetNo);\n } else {\n // create temp file for each worksheet\n await new Promise((resolve, reject) => {\n tmp.file((err, path, fd, tempFileCleanupCallback) => {\n if (err) {\n return reject(err);\n }\n waitingWorkSheets.push({sheetNo, path, tempFileCleanupCallback});\n\n const tempStream = fs.createWriteStream(path);\n tempStream.on('error', reject);\n entry.pipe(tempStream);\n return tempStream.on('finish', () => {\n return resolve();\n });\n });\n });\n }\n } else if (entry.path.match(/xl\\/worksheets\\/_rels\\/sheet\\d+[.]xml.rels/)) {\n match = entry.path.match(/xl\\/worksheets\\/_rels\\/sheet(\\d+)[.]xml.rels/);\n sheetNo = match[1];\n yield* this._parseHyperlinks(iterateStream(entry), sheetNo);\n }\n break;\n }\n entry.autodrain();\n }\n\n for (const {sheetNo, path, tempFileCleanupCallback} of waitingWorkSheets) {\n let fileStream = fs.createReadStream(path);\n // TODO: Remove once node v8 is deprecated\n // Detect and upgrade old fileStreams\n if (!fileStream[Symbol.asyncIterator]) {\n fileStream = fileStream.pipe(new PassThrough());\n }\n yield* this._parseWorksheet(fileStream, sheetNo);\n tempFileCleanupCallback();\n }\n }\n\n _emitEntry(payload) {\n if (this.options.entries === 'emit') {\n this.emit('entry', payload);\n }\n }\n\n async _parseRels(entry) {\n const xform = new RelationshipsXform();\n this.workbookRels = await xform.parseStream(iterateStream(entry));\n }\n\n async _parseWorkbook(entry) {\n this._emitEntry({type: 'workbook'});\n\n const workbook = new WorkbookXform();\n await workbook.parseStream(iterateStream(entry));\n\n this.properties = workbook.map.workbookPr;\n this.model = workbook.model;\n }\n\n async *_parseSharedStrings(entry) {\n this._emitEntry({type: 'shared-strings'});\n switch (this.options.sharedStrings) {\n case 'cache':\n this.sharedStrings = [];\n break;\n case 'emit':\n break;\n default:\n return;\n }\n\n let text = null;\n let richText = [];\n let index = 0;\n let font = null;\n for await (const events of parseSax(iterateStream(entry))) {\n for (const {eventType, value} of events) {\n if (eventType === 'opentag') {\n const node = value;\n switch (node.name) {\n case 'b':\n font = font || {};\n font.bold = true;\n break;\n case 'charset':\n font = font || {};\n font.charset = parseInt(node.attributes.charset, 10);\n break;\n case 'color':\n font = font || {};\n font.color = {};\n if (node.attributes.rgb) {\n font.color.argb = node.attributes.argb;\n }\n if (node.attributes.val) {\n font.color.argb = node.attributes.val;\n }\n if (node.attributes.theme) {\n font.color.theme = node.attributes.theme;\n }\n break;\n case 'family':\n font = font || {};\n font.family = parseInt(node.attributes.val, 10);\n break;\n case 'i':\n font = font || {};\n font.italic = true;\n break;\n case 'outline':\n font = font || {};\n font.outline = true;\n break;\n case 'rFont':\n font = font || {};\n font.name = node.value;\n break;\n case 'si':\n font = null;\n richText = [];\n text = null;\n break;\n case 'sz':\n font = font || {};\n font.size = parseInt(node.attributes.val, 10);\n break;\n case 'strike':\n break;\n case 't':\n text = null;\n break;\n case 'u':\n font = font || {};\n font.underline = true;\n break;\n case 'vertAlign':\n font = font || {};\n font.vertAlign = node.attributes.val;\n break;\n }\n } else if (eventType === 'text') {\n text = text ? text + value : value;\n } else if (eventType === 'closetag') {\n const node = value;\n switch (node.name) {\n case 'r':\n richText.push({\n font,\n text,\n });\n\n font = null;\n text = null;\n break;\n case 'si':\n if (this.options.sharedStrings === 'cache') {\n this.sharedStrings.push(richText.length ? {richText} : text);\n } else if (this.options.sharedStrings === 'emit') {\n yield {index: index++, text: richText.length ? {richText} : text};\n }\n\n richText = [];\n font = null;\n text = null;\n break;\n }\n }\n }\n }\n }\n\n async _parseStyles(entry) {\n this._emitEntry({type: 'styles'});\n if (this.options.styles === 'cache') {\n this.styles = new StyleManager();\n await this.styles.parseStream(iterateStream(entry));\n }\n }\n\n *_parseWorksheet(iterator, sheetNo) {\n this._emitEntry({type: 'worksheet', id: sheetNo});\n const worksheetReader = new WorksheetReader({\n workbook: this,\n id: sheetNo,\n iterator,\n options: this.options,\n });\n\n const matchingRel = (this.workbookRels || []).find(rel => rel.Target === `worksheets/sheet${sheetNo}.xml`);\n const matchingSheet = matchingRel && (this.model.sheets || []).find(sheet => sheet.rId === matchingRel.Id);\n if (matchingSheet) {\n worksheetReader.id = matchingSheet.id;\n worksheetReader.name = matchingSheet.name;\n worksheetReader.state = matchingSheet.state;\n }\n if (this.options.worksheets === 'emit') {\n yield {eventType: 'worksheet', value: worksheetReader};\n }\n }\n\n *_parseHyperlinks(iterator, sheetNo) {\n this._emitEntry({type: 'hyperlinks', id: sheetNo});\n const hyperlinksReader = new HyperlinkReader({\n workbook: this,\n id: sheetNo,\n iterator,\n options: this.options,\n });\n if (this.options.hyperlinks === 'emit') {\n yield {eventType: 'hyperlinks', value: hyperlinksReader};\n }\n }\n}\n\n// for reference - these are the valid values for options\nWorkbookReader.Options = {\n worksheets: ['emit', 'ignore'],\n sharedStrings: ['cache', 'emit', 'ignore'],\n hyperlinks: ['cache', 'emit', 'ignore'],\n styles: ['cache', 'ignore'],\n entries: ['emit', 'ignore'],\n};\n\nmodule.exports = WorkbookReader;\n"],"mappings":"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","ignoreList":[]}
|