@zergai/ztc 0.2.5-dev.36050717543 → 0.2.6-dev.36101352252
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/THIRD_PARTY_NOTICES.md +16 -5
- package/dist/zlm-embed.mjs +1 -1
- package/node_modules/exceljs/LICENSE +0 -1
- package/node_modules/exceljs/index.d.ts +6 -6
- package/node_modules/exceljs/package.json +1 -46
- package/package.json +10 -4
- package/{node_modules/exceljs/dist → packages/exceljs}/LICENSE +0 -1
- package/packages/exceljs/PROVENANCE.md +18 -0
- package/packages/exceljs/excel.js +13 -0
- package/packages/exceljs/index.d.ts +2035 -0
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/csv/csv.js +97 -88
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/csv/line-buffer.js +12 -6
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/csv/stream-converter.js +30 -5
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/doc/anchor.js +26 -8
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/doc/cell.js +245 -82
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/doc/column.js +53 -7
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/doc/data-validations.js +5 -4
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/doc/defined-names.js +38 -15
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/doc/enums.js +7 -8
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/doc/image.js +13 -23
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/doc/modelcontainer.js +3 -1
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/doc/note.js +19 -18
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/doc/range.js +91 -63
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/doc/row.js +86 -53
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/doc/table.js +63 -41
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/doc/workbook.js +43 -24
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/doc/worksheet.js +150 -123
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/exceljs.bare.js +3 -4
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/exceljs.browser.js +4 -4
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/exceljs.nodejs.js +5 -6
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/stream/xlsx/hyperlink-reader.js +16 -23
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/stream/xlsx/sheet-comments-writer.js +35 -8
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/stream/xlsx/sheet-rels-writer.js +34 -9
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/stream/xlsx/workbook-reader.js +52 -77
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/stream/xlsx/workbook-writer.js +101 -101
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/stream/xlsx/worksheet-reader.js +52 -70
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/stream/xlsx/worksheet-writer.js +161 -96
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/utils/auto-drain.js +3 -6
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/utils/browser-buffer-decode.js +2 -3
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/utils/browser-buffer-encode.js +3 -6
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/utils/cell-matrix.js +34 -18
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/utils/col-cache.js +62 -33
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/utils/copy-style.js +12 -12
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/utils/encryptor.js +3 -6
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/utils/iterate-stream.js +6 -4
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/utils/parse-sax.js +6 -23
- package/packages/exceljs/lib/utils/shared-formula.js +44 -0
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/utils/shared-strings.js +6 -3
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/utils/stream-base64.js +17 -11
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/utils/stream-buf.js +33 -12
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/utils/string-buf.js +14 -5
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/utils/string-builder.js +6 -3
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/utils/stuttered-pipe.js +9 -3
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/utils/typed-stack.js +4 -3
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/utils/under-dash.js +30 -14
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/utils/utils.js +28 -27
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/utils/xml-stream.js +23 -5
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/utils/zip-stream.js +22 -14
- package/packages/exceljs/lib/xlsx/.rels +11 -0
- package/packages/exceljs/lib/xlsx/calcChain.xml +6 -0
- package/packages/exceljs/lib/xlsx/core.xml +7 -0
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/defaultnumformats.js +61 -138
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/rel-type.js +9 -6
- package/packages/exceljs/lib/xlsx/styles.xml +41 -0
- package/packages/exceljs/lib/xlsx/workbook.xml +16 -0
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/base-xform.js +27 -21
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/book/defined-name-xform.js +11 -5
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/book/sheet-xform.js +7 -5
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/book/workbook-calc-properties-xform.js +6 -4
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/book/workbook-properties-xform.js +7 -5
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/book/workbook-view-xform.js +11 -9
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/book/workbook-xform.js +45 -24
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/comment/comment-xform.js +11 -9
- package/packages/exceljs/lib/xlsx/xform/comment/comments-xform.js +82 -0
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/comment/style/vml-position-xform.js +7 -3
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/comment/style/vml-protection-xform.js +7 -3
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/comment/vml-anchor-xform.js +11 -4
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/comment/vml-client-data-xform.js +22 -24
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/comment/vml-notes-xform.js +21 -21
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/comment/vml-shape-xform.js +22 -19
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/comment/vml-textbox-xform.js +17 -14
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/composite-xform.js +8 -3
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/core/app-heading-pairs-xform.js +9 -7
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/core/app-titles-of-parts-xform.js +8 -7
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/core/app-xform.js +23 -16
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/core/content-types-xform.js +36 -28
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/core/core-xform.js +33 -55
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/core/relationship-xform.js +5 -3
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/core/relationships-xform.js +13 -5
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/drawing/base-cell-anchor-xform.js +6 -5
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/drawing/blip-fill-xform.js +14 -4
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/drawing/blip-xform.js +7 -5
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/drawing/c-nv-pic-pr-xform.js +7 -4
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/drawing/c-nv-pr-xform.js +11 -5
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/drawing/cell-position-xform.js +15 -20
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/drawing/drawing-xform.js +20 -9
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/drawing/ext-lst-xform.js +8 -5
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/drawing/ext-xform.js +13 -7
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/drawing/hlink-click-xform.js +9 -6
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/drawing/nv-pic-pr-xform.js +10 -4
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/drawing/one-cell-anchor-xform.js +15 -15
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/drawing/pic-xform.js +14 -4
- package/packages/exceljs/lib/xlsx/xform/drawing/sp-pr.js +17 -0
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/drawing/two-cell-anchor-xform.js +15 -15
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/list-xform.js +18 -14
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/auto-filter-xform.js +8 -10
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/cell-xform.js +118 -71
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/cf/cf-rule-xform.js +64 -38
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/cf/cfvo-xform.js +7 -5
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/cf/color-scale-xform.js +13 -6
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/cf/conditional-formatting-xform.js +15 -12
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/cf/conditional-formattings-xform.js +19 -4
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/cf/databar-xform.js +13 -6
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +22 -6
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/cf/formula-xform.js +6 -3
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/cf/icon-set-xform.js +14 -10
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +8 -9
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +26 -16
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +11 -6
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +17 -7
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +11 -4
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +41 -18
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/cf-ext/f-ext-xform.js +6 -3
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +18 -11
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +6 -3
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/col-xform.js +14 -6
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/data-validations-xform.js +123 -113
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/dimension-xform.js +7 -6
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/drawing-xform.js +8 -7
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/ext-lst-xform.js +23 -6
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/header-footer-xform.js +23 -3
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/hyperlink-xform.js +10 -6
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/merge-cell-xform.js +7 -6
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/merges.js +8 -4
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/outline-properties-xform.js +14 -6
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/page-breaks-xform.js +6 -3
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/page-margins-xform.js +8 -5
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/page-setup-properties-xform.js +8 -5
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/page-setup-xform.js +9 -5
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/picture-xform.js +8 -7
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/print-options-xform.js +9 -5
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/row-breaks-xform.js +7 -5
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/row-xform.js +22 -8
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/sheet-format-properties-xform.js +9 -5
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/sheet-properties-xform.js +11 -4
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/sheet-protection-xform.js +10 -5
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/sheet-view-xform.js +39 -27
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/table-part-xform.js +8 -7
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/sheet/worksheet-xform.js +138 -112
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/simple/boolean-xform.js +7 -3
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/simple/date-xform.js +22 -14
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/simple/float-xform.js +7 -3
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/simple/integer-xform.js +7 -3
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/simple/string-xform.js +7 -3
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/static-xform.js +6 -3
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/strings/phonetic-text-xform.js +20 -20
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/strings/rich-text-xform.js +13 -4
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/strings/shared-string-xform.js +18 -15
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/strings/shared-strings-xform.js +18 -5
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/strings/text-xform.js +9 -4
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/style/alignment-xform.js +42 -9
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/style/border-xform.js +52 -30
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/style/color-xform.js +9 -12
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/style/dxf-xform.js +14 -9
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/style/fill-xform.js +86 -30
- package/packages/exceljs/lib/xlsx/xform/style/font-xform.js +102 -0
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/style/numfmt-xform.js +13 -9
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/style/protection-xform.js +12 -5
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/style/style-xform.js +13 -6
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/style/styles-xform.js +123 -208
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/style/underline-xform.js +13 -12
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/table/auto-filter-xform.js +17 -11
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/table/custom-filter-xform.js +8 -5
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/table/filter-column-xform.js +19 -12
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/table/filter-xform.js +8 -5
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/table/table-column-xform.js +10 -8
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/table/table-style-info-xform.js +9 -8
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xform/table/table-xform.js +20 -12
- package/{node_modules/exceljs/dist/es5 → packages/exceljs/lib}/xlsx/xlsx.js +197 -200
- package/packages/exceljs/lib/xlsx/xml/theme1.js +3 -0
- package/packages/exceljs/lib/xlsx/xml/theme1.xml +318 -0
- package/packages/exceljs/package.json +104 -0
- package/packages/sim-graph/package.json +3 -0
- package/node_modules/exceljs/README.md +0 -3023
- package/node_modules/exceljs/README_zh.md +0 -2878
- package/node_modules/exceljs/dist/es5/csv/csv.js.map +0 -1
- package/node_modules/exceljs/dist/es5/csv/line-buffer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/csv/stream-converter.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/anchor.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/cell.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/column.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/data-validations.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/defined-names.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/enums.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/image.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/modelcontainer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/note.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/range.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/row.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/table.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/workbook.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/worksheet.js.map +0 -1
- package/node_modules/exceljs/dist/es5/exceljs.bare.js.map +0 -1
- package/node_modules/exceljs/dist/es5/exceljs.browser.js.map +0 -1
- package/node_modules/exceljs/dist/es5/exceljs.nodejs.js.map +0 -1
- package/node_modules/exceljs/dist/es5/index.js +0 -15
- package/node_modules/exceljs/dist/es5/stream/xlsx/hyperlink-reader.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-comments-writer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-rels-writer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-reader.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-writer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-reader.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-writer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/auto-drain.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/browser-buffer-decode.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/browser-buffer-encode.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/cell-matrix.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/col-cache.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/copy-style.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/encryptor.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/iterate-stream.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/parse-sax.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/shared-formula.js +0 -42
- package/node_modules/exceljs/dist/es5/utils/shared-formula.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/shared-strings.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/stream-base64.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/stream-buf.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/string-buf.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/string-builder.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/stuttered-pipe.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/typed-stack.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/under-dash.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/utils.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/xml-stream.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/zip-stream.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/defaultnumformats.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/rel-type.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/base-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/defined-name-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/sheet-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-view-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comment-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comments-xform.js +0 -76
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comments-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-position-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-anchor-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-client-data-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-notes-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-shape-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-textbox-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/composite-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/content-types-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/core-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationship-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationships-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-fill-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/cell-position-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/drawing-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-lst-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/hlink-click-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/pic-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/sp-pr.js +0 -30
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/sp-pr.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/list-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/auto-filter-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cell-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/databar-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/formula-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/col-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/data-validations-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/dimension-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/drawing-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/ext-lst-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/header-footer-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/hyperlink-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merge-cell-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merges.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/outline-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-breaks-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-margins-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/picture-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/print-options-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-breaks-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-view-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/table-part-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/worksheet-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/boolean-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/date-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/float-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/integer-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/string-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/static-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/phonetic-text-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/rich-text-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-string-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-strings-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/text-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/alignment-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/border-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/color-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/dxf-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/fill-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/font-xform.js +0 -175
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/font-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/numfmt-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/protection-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/style-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/styles-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/underline-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/auto-filter-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/custom-filter-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-column-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-column-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-style-info-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xlsx.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xml/theme1.js +0 -5
- package/node_modules/exceljs/dist/es5/xlsx/xml/theme1.js.map +0 -1
- package/node_modules/exceljs/dist/exceljs.bare.js +0 -55253
- package/node_modules/exceljs/dist/exceljs.bare.js.map +0 -761
- package/node_modules/exceljs/dist/exceljs.bare.min.js +0 -45
- package/node_modules/exceljs/dist/exceljs.bare.min.js.map +0 -1
- package/node_modules/exceljs/dist/exceljs.js +0 -59900
- package/node_modules/exceljs/dist/exceljs.js.map +0 -1083
- package/node_modules/exceljs/dist/exceljs.min.js +0 -45
- package/node_modules/exceljs/dist/exceljs.min.js.map +0 -1
- package/node_modules/exceljs/index.ts +0 -2
- package/node_modules/exceljs/lib/doc/data/theme1.json +0 -234
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
1
|
const fs = require('fs');
|
|
4
2
|
const JSZip = require('jszip');
|
|
5
|
-
const {
|
|
6
|
-
PassThrough
|
|
7
|
-
} = require('readable-stream');
|
|
3
|
+
const {PassThrough} = require('readable-stream');
|
|
8
4
|
const ZipStream = require('../utils/zip-stream');
|
|
9
5
|
const StreamBuf = require('../utils/stream-buf');
|
|
6
|
+
|
|
10
7
|
const utils = require('../utils/utils');
|
|
11
8
|
const XmlStream = require('../utils/xml-stream');
|
|
12
|
-
const {
|
|
13
|
-
|
|
14
|
-
} = require('../utils/browser-buffer-decode');
|
|
9
|
+
const {bufferToString} = require('../utils/browser-buffer-decode');
|
|
10
|
+
|
|
15
11
|
const StylesXform = require('./xform/style/styles-xform');
|
|
12
|
+
|
|
16
13
|
const CoreXform = require('./xform/core/core-xform');
|
|
17
14
|
const SharedStringsXform = require('./xform/strings/shared-strings-xform');
|
|
18
15
|
const RelationshipsXform = require('./xform/core/relationships-xform');
|
|
@@ -24,7 +21,9 @@ const DrawingXform = require('./xform/drawing/drawing-xform');
|
|
|
24
21
|
const TableXform = require('./xform/table/table-xform');
|
|
25
22
|
const CommentsXform = require('./xform/comment/comments-xform');
|
|
26
23
|
const VmlNotesXform = require('./xform/comment/vml-notes-xform');
|
|
24
|
+
|
|
27
25
|
const theme1Xml = require('./xml/theme1');
|
|
26
|
+
|
|
28
27
|
function fsReadFileAsync(filename, options) {
|
|
29
28
|
return new Promise((resolve, reject) => {
|
|
30
29
|
fs.readFile(filename, options, (error, data) => {
|
|
@@ -36,6 +35,7 @@ function fsReadFileAsync(filename, options) {
|
|
|
36
35
|
});
|
|
37
36
|
});
|
|
38
37
|
}
|
|
38
|
+
|
|
39
39
|
class XLSX {
|
|
40
40
|
constructor(workbook) {
|
|
41
41
|
this.workbook = workbook;
|
|
@@ -60,29 +60,34 @@ class XLSX {
|
|
|
60
60
|
throw error;
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
|
+
|
|
63
64
|
parseRels(stream) {
|
|
64
65
|
const xform = new RelationshipsXform();
|
|
65
66
|
return xform.parseStream(stream);
|
|
66
67
|
}
|
|
68
|
+
|
|
67
69
|
parseWorkbook(stream) {
|
|
68
70
|
const xform = new WorkbookXform();
|
|
69
71
|
return xform.parseStream(stream);
|
|
70
72
|
}
|
|
73
|
+
|
|
71
74
|
parseSharedStrings(stream) {
|
|
72
75
|
const xform = new SharedStringsXform();
|
|
73
76
|
return xform.parseStream(stream);
|
|
74
77
|
}
|
|
78
|
+
|
|
75
79
|
reconcile(model, options) {
|
|
76
80
|
const workbookXform = new WorkbookXform();
|
|
77
81
|
const worksheetXform = new WorksheetXform(options);
|
|
78
82
|
const drawingXform = new DrawingXform();
|
|
79
83
|
const tableXform = new TableXform();
|
|
84
|
+
|
|
80
85
|
workbookXform.reconcile(model);
|
|
81
86
|
|
|
82
87
|
// reconcile drawings with their rels
|
|
83
88
|
const drawingOptions = {
|
|
84
89
|
media: model.media,
|
|
85
|
-
mediaIndex: model.mediaIndex
|
|
90
|
+
mediaIndex: model.mediaIndex,
|
|
86
91
|
};
|
|
87
92
|
Object.keys(model.drawings).forEach(name => {
|
|
88
93
|
const drawing = model.drawings[name];
|
|
@@ -105,11 +110,12 @@ class XLSX {
|
|
|
105
110
|
|
|
106
111
|
// reconcile tables with the default styles
|
|
107
112
|
const tableOptions = {
|
|
108
|
-
styles: model.styles
|
|
113
|
+
styles: model.styles,
|
|
109
114
|
};
|
|
110
115
|
Object.values(model.tables).forEach(table => {
|
|
111
116
|
tableXform.reconcile(table, tableOptions);
|
|
112
117
|
});
|
|
118
|
+
|
|
113
119
|
const sheetOptions = {
|
|
114
120
|
styles: model.styles,
|
|
115
121
|
sharedStrings: model.sharedStrings,
|
|
@@ -119,7 +125,7 @@ class XLSX {
|
|
|
119
125
|
drawings: model.drawings,
|
|
120
126
|
comments: model.comments,
|
|
121
127
|
tables: model.tables,
|
|
122
|
-
vmlDrawings: model.vmlDrawings
|
|
128
|
+
vmlDrawings: model.vmlDrawings,
|
|
123
129
|
};
|
|
124
130
|
model.worksheets.forEach(worksheet => {
|
|
125
131
|
worksheet.relationships = model.worksheetRels[worksheet.sheetNo];
|
|
@@ -139,6 +145,7 @@ class XLSX {
|
|
|
139
145
|
delete model.drawingRels;
|
|
140
146
|
delete model.vmlDrawings;
|
|
141
147
|
}
|
|
148
|
+
|
|
142
149
|
async _processWorksheetEntry(stream, model, sheetNo, options, path) {
|
|
143
150
|
const xform = new WorksheetXform(options);
|
|
144
151
|
const worksheet = await xform.parseStream(stream);
|
|
@@ -146,21 +153,25 @@ class XLSX {
|
|
|
146
153
|
model.worksheetHash[path] = worksheet;
|
|
147
154
|
model.worksheets.push(worksheet);
|
|
148
155
|
}
|
|
156
|
+
|
|
149
157
|
async _processCommentEntry(stream, model, name) {
|
|
150
158
|
const xform = new CommentsXform();
|
|
151
159
|
const comments = await xform.parseStream(stream);
|
|
152
160
|
model.comments[`../${name}.xml`] = comments;
|
|
153
161
|
}
|
|
162
|
+
|
|
154
163
|
async _processTableEntry(stream, model, name) {
|
|
155
164
|
const xform = new TableXform();
|
|
156
165
|
const table = await xform.parseStream(stream);
|
|
157
166
|
model.tables[`../tables/${name}.xml`] = table;
|
|
158
167
|
}
|
|
168
|
+
|
|
159
169
|
async _processWorksheetRelsEntry(stream, model, sheetNo) {
|
|
160
170
|
const xform = new RelationshipsXform();
|
|
161
171
|
const relationships = await xform.parseStream(stream);
|
|
162
172
|
model.worksheetRels[sheetNo] = relationships;
|
|
163
173
|
}
|
|
174
|
+
|
|
164
175
|
async _processMediaEntry(entry, model, filename) {
|
|
165
176
|
const lastDot = filename.lastIndexOf('.');
|
|
166
177
|
// if we can't determine extension, ignore it
|
|
@@ -176,7 +187,7 @@ class XLSX {
|
|
|
176
187
|
type: 'image',
|
|
177
188
|
name,
|
|
178
189
|
extension,
|
|
179
|
-
buffer: streamBuf.toBuffer()
|
|
190
|
+
buffer: streamBuf.toBuffer(),
|
|
180
191
|
};
|
|
181
192
|
model.media.push(medium);
|
|
182
193
|
resolve();
|
|
@@ -188,21 +199,25 @@ class XLSX {
|
|
|
188
199
|
});
|
|
189
200
|
}
|
|
190
201
|
}
|
|
202
|
+
|
|
191
203
|
async _processDrawingEntry(entry, model, name) {
|
|
192
204
|
const xform = new DrawingXform();
|
|
193
205
|
const drawing = await xform.parseStream(entry);
|
|
194
206
|
model.drawings[name] = drawing;
|
|
195
207
|
}
|
|
208
|
+
|
|
196
209
|
async _processDrawingRelsEntry(entry, model, name) {
|
|
197
210
|
const xform = new RelationshipsXform();
|
|
198
211
|
const relationships = await xform.parseStream(entry);
|
|
199
212
|
model.drawingRels[name] = relationships;
|
|
200
213
|
}
|
|
214
|
+
|
|
201
215
|
async _processVmlDrawingEntry(entry, model, name) {
|
|
202
216
|
const xform = new VmlNotesXform();
|
|
203
217
|
const vmlDrawing = await xform.parseStream(entry);
|
|
204
218
|
model.vmlDrawings[`../drawings/${name}.vml`] = vmlDrawing;
|
|
205
219
|
}
|
|
220
|
+
|
|
206
221
|
async _processThemeEntry(entry, model, name) {
|
|
207
222
|
await new Promise((resolve, reject) => {
|
|
208
223
|
// TODO: stream entry into buffer and store the xml in the model.themes[]
|
|
@@ -221,8 +236,11 @@ class XLSX {
|
|
|
221
236
|
* @deprecated since version 4.0. You should use `#read` instead. Please follow upgrade instruction: https://github.com/exceljs/exceljs/blob/master/UPGRADE-4.0.md
|
|
222
237
|
*/
|
|
223
238
|
createInputStream() {
|
|
224
|
-
throw new Error(
|
|
239
|
+
throw new Error(
|
|
240
|
+
'`XLSX#createInputStream` is deprecated. You should use `XLSX#read` instead. This method will be removed in version 5.0. Please follow upgrade instruction: https://github.com/exceljs/exceljs/blob/master/UPGRADE-4.0.md'
|
|
241
|
+
);
|
|
225
242
|
}
|
|
243
|
+
|
|
226
244
|
async read(stream, options) {
|
|
227
245
|
// TODO: Remove once node v8 is deprecated
|
|
228
246
|
// Detect and upgrade old streams
|
|
@@ -235,6 +253,7 @@ class XLSX {
|
|
|
235
253
|
}
|
|
236
254
|
return this.load(Buffer.concat(chunks), options);
|
|
237
255
|
}
|
|
256
|
+
|
|
238
257
|
async load(data, options) {
|
|
239
258
|
let buffer;
|
|
240
259
|
if (options && options.base64) {
|
|
@@ -242,6 +261,7 @@ class XLSX {
|
|
|
242
261
|
} else {
|
|
243
262
|
buffer = data;
|
|
244
263
|
}
|
|
264
|
+
|
|
245
265
|
const model = {
|
|
246
266
|
worksheets: [],
|
|
247
267
|
worksheetHash: {},
|
|
@@ -253,8 +273,9 @@ class XLSX {
|
|
|
253
273
|
drawingRels: {},
|
|
254
274
|
comments: {},
|
|
255
275
|
tables: {},
|
|
256
|
-
vmlDrawings: {}
|
|
276
|
+
vmlDrawings: {},
|
|
257
277
|
};
|
|
278
|
+
|
|
258
279
|
const zip = await JSZip.loadAsync(buffer);
|
|
259
280
|
for (const entry of Object.values(zip.files)) {
|
|
260
281
|
/* eslint-disable no-await-in-loop */
|
|
@@ -264,16 +285,18 @@ class XLSX {
|
|
|
264
285
|
entryName = entryName.substr(1);
|
|
265
286
|
}
|
|
266
287
|
let stream;
|
|
267
|
-
if (
|
|
268
|
-
|
|
269
|
-
|
|
288
|
+
if (
|
|
289
|
+
entryName.match(/xl\/media\//) ||
|
|
290
|
+
// themes are not parsed as stream
|
|
291
|
+
entryName.match(/xl\/theme\/([a-zA-Z0-9]+)[.]xml/)
|
|
292
|
+
) {
|
|
270
293
|
stream = new PassThrough();
|
|
271
294
|
stream.write(await entry.async('nodebuffer'));
|
|
272
295
|
} else {
|
|
273
296
|
// use object mode to avoid buffer-string convention
|
|
274
297
|
stream = new PassThrough({
|
|
275
298
|
writableObjectMode: true,
|
|
276
|
-
readableObjectMode: true
|
|
299
|
+
readableObjectMode: true,
|
|
277
300
|
});
|
|
278
301
|
let content;
|
|
279
302
|
// https://www.npmjs.com/package/process
|
|
@@ -294,93 +317,97 @@ class XLSX {
|
|
|
294
317
|
case '_rels/.rels':
|
|
295
318
|
model.globalRels = await this.parseRels(stream);
|
|
296
319
|
break;
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
320
|
+
|
|
321
|
+
case 'xl/workbook.xml': {
|
|
322
|
+
const workbook = await this.parseWorkbook(stream);
|
|
323
|
+
model.sheets = workbook.sheets;
|
|
324
|
+
model.definedNames = workbook.definedNames;
|
|
325
|
+
model.views = workbook.views;
|
|
326
|
+
model.properties = workbook.properties;
|
|
327
|
+
model.calcProperties = workbook.calcProperties;
|
|
328
|
+
break;
|
|
329
|
+
}
|
|
330
|
+
|
|
307
331
|
case 'xl/_rels/workbook.xml.rels':
|
|
308
332
|
model.workbookRels = await this.parseRels(stream);
|
|
309
333
|
break;
|
|
334
|
+
|
|
310
335
|
case 'xl/sharedStrings.xml':
|
|
311
336
|
model.sharedStrings = new SharedStringsXform();
|
|
312
337
|
await model.sharedStrings.parseStream(stream);
|
|
313
338
|
break;
|
|
339
|
+
|
|
314
340
|
case 'xl/styles.xml':
|
|
315
341
|
model.styles = new StylesXform();
|
|
316
342
|
await model.styles.parseStream(stream);
|
|
317
343
|
break;
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
344
|
+
|
|
345
|
+
case 'docProps/app.xml': {
|
|
346
|
+
const appXform = new AppXform();
|
|
347
|
+
const appProperties = await appXform.parseStream(stream);
|
|
348
|
+
model.company = appProperties.company;
|
|
349
|
+
model.manager = appProperties.manager;
|
|
350
|
+
break;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
case 'docProps/core.xml': {
|
|
354
|
+
const coreXform = new CoreXform();
|
|
355
|
+
const coreProperties = await coreXform.parseStream(stream);
|
|
356
|
+
Object.assign(model, coreProperties);
|
|
357
|
+
break;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
default: {
|
|
361
|
+
let match = entryName.match(/xl\/worksheets\/sheet(\d+)[.]xml/);
|
|
362
|
+
if (match) {
|
|
363
|
+
await this._processWorksheetEntry(stream, model, match[1], options, entryName);
|
|
324
364
|
break;
|
|
325
365
|
}
|
|
326
|
-
|
|
327
|
-
{
|
|
328
|
-
|
|
329
|
-
const coreProperties = await coreXform.parseStream(stream);
|
|
330
|
-
Object.assign(model, coreProperties);
|
|
366
|
+
match = entryName.match(/xl\/worksheets\/_rels\/sheet(\d+)[.]xml.rels/);
|
|
367
|
+
if (match) {
|
|
368
|
+
await this._processWorksheetRelsEntry(stream, model, match[1]);
|
|
331
369
|
break;
|
|
332
370
|
}
|
|
333
|
-
|
|
334
|
-
{
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
await this._processWorksheetEntry(stream, model, match[1], options, entryName);
|
|
338
|
-
break;
|
|
339
|
-
}
|
|
340
|
-
match = entryName.match(/xl\/worksheets\/_rels\/sheet(\d+)[.]xml.rels/);
|
|
341
|
-
if (match) {
|
|
342
|
-
await this._processWorksheetRelsEntry(stream, model, match[1]);
|
|
343
|
-
break;
|
|
344
|
-
}
|
|
345
|
-
match = entryName.match(/xl\/theme\/([a-zA-Z0-9]+)[.]xml/);
|
|
346
|
-
if (match) {
|
|
347
|
-
await this._processThemeEntry(stream, model, match[1]);
|
|
348
|
-
break;
|
|
349
|
-
}
|
|
350
|
-
match = entryName.match(/xl\/media\/([a-zA-Z0-9]+[.][a-zA-Z0-9]{3,4})$/);
|
|
351
|
-
if (match) {
|
|
352
|
-
await this._processMediaEntry(stream, model, match[1]);
|
|
353
|
-
break;
|
|
354
|
-
}
|
|
355
|
-
match = entryName.match(/xl\/drawings\/([a-zA-Z0-9]+)[.]xml/);
|
|
356
|
-
if (match) {
|
|
357
|
-
await this._processDrawingEntry(stream, model, match[1]);
|
|
358
|
-
break;
|
|
359
|
-
}
|
|
360
|
-
match = entryName.match(/xl\/(comments\d+)[.]xml/);
|
|
361
|
-
if (match) {
|
|
362
|
-
await this._processCommentEntry(stream, model, match[1]);
|
|
363
|
-
break;
|
|
364
|
-
}
|
|
365
|
-
match = entryName.match(/xl\/tables\/(table\d+)[.]xml/);
|
|
366
|
-
if (match) {
|
|
367
|
-
await this._processTableEntry(stream, model, match[1]);
|
|
368
|
-
break;
|
|
369
|
-
}
|
|
370
|
-
match = entryName.match(/xl\/drawings\/_rels\/([a-zA-Z0-9]+)[.]xml[.]rels/);
|
|
371
|
-
if (match) {
|
|
372
|
-
await this._processDrawingRelsEntry(stream, model, match[1]);
|
|
373
|
-
break;
|
|
374
|
-
}
|
|
375
|
-
match = entryName.match(/xl\/drawings\/(vmlDrawing\d+)[.]vml/);
|
|
376
|
-
if (match) {
|
|
377
|
-
await this._processVmlDrawingEntry(stream, model, match[1]);
|
|
378
|
-
break;
|
|
379
|
-
}
|
|
371
|
+
match = entryName.match(/xl\/theme\/([a-zA-Z0-9]+)[.]xml/);
|
|
372
|
+
if (match) {
|
|
373
|
+
await this._processThemeEntry(stream, model, match[1]);
|
|
374
|
+
break;
|
|
380
375
|
}
|
|
376
|
+
match = entryName.match(/xl\/media\/([a-zA-Z0-9]+[.][a-zA-Z0-9]{3,4})$/);
|
|
377
|
+
if (match) {
|
|
378
|
+
await this._processMediaEntry(stream, model, match[1]);
|
|
379
|
+
break;
|
|
380
|
+
}
|
|
381
|
+
match = entryName.match(/xl\/drawings\/([a-zA-Z0-9]+)[.]xml/);
|
|
382
|
+
if (match) {
|
|
383
|
+
await this._processDrawingEntry(stream, model, match[1]);
|
|
384
|
+
break;
|
|
385
|
+
}
|
|
386
|
+
match = entryName.match(/xl\/(comments\d+)[.]xml/);
|
|
387
|
+
if (match) {
|
|
388
|
+
await this._processCommentEntry(stream, model, match[1]);
|
|
389
|
+
break;
|
|
390
|
+
}
|
|
391
|
+
match = entryName.match(/xl\/tables\/(table\d+)[.]xml/);
|
|
392
|
+
if (match) {
|
|
393
|
+
await this._processTableEntry(stream, model, match[1]);
|
|
394
|
+
break;
|
|
395
|
+
}
|
|
396
|
+
match = entryName.match(/xl\/drawings\/_rels\/([a-zA-Z0-9]+)[.]xml[.]rels/);
|
|
397
|
+
if (match) {
|
|
398
|
+
await this._processDrawingRelsEntry(stream, model, match[1]);
|
|
399
|
+
break;
|
|
400
|
+
}
|
|
401
|
+
match = entryName.match(/xl\/drawings\/(vmlDrawing\d+)[.]vml/);
|
|
402
|
+
if (match) {
|
|
403
|
+
await this._processVmlDrawingEntry(stream, model, match[1]);
|
|
404
|
+
break;
|
|
405
|
+
}
|
|
406
|
+
}
|
|
381
407
|
}
|
|
382
408
|
}
|
|
383
409
|
}
|
|
410
|
+
|
|
384
411
|
this.reconcile(model, options);
|
|
385
412
|
|
|
386
413
|
// apply model
|
|
@@ -392,134 +419,105 @@ class XLSX {
|
|
|
392
419
|
// Write
|
|
393
420
|
|
|
394
421
|
async addMedia(zip, model) {
|
|
395
|
-
await Promise.all(
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
name: filename
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
const content = dataimg64.substring(dataimg64.indexOf(',') + 1);
|
|
412
|
-
return zip.append(content, {
|
|
413
|
-
name: filename,
|
|
414
|
-
base64: true
|
|
415
|
-
});
|
|
422
|
+
await Promise.all(
|
|
423
|
+
model.media.map(async medium => {
|
|
424
|
+
if (medium.type === 'image') {
|
|
425
|
+
const filename = `xl/media/${medium.name}.${medium.extension}`;
|
|
426
|
+
if (medium.filename) {
|
|
427
|
+
const data = await fsReadFileAsync(medium.filename);
|
|
428
|
+
return zip.append(data, {name: filename});
|
|
429
|
+
}
|
|
430
|
+
if (medium.buffer) {
|
|
431
|
+
return zip.append(medium.buffer, {name: filename});
|
|
432
|
+
}
|
|
433
|
+
if (medium.base64) {
|
|
434
|
+
const dataimg64 = medium.base64;
|
|
435
|
+
const content = dataimg64.substring(dataimg64.indexOf(',') + 1);
|
|
436
|
+
return zip.append(content, {name: filename, base64: true});
|
|
437
|
+
}
|
|
416
438
|
}
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
439
|
+
throw new Error('Unsupported media');
|
|
440
|
+
})
|
|
441
|
+
);
|
|
420
442
|
}
|
|
443
|
+
|
|
421
444
|
addDrawings(zip, model) {
|
|
422
445
|
const drawingXform = new DrawingXform();
|
|
423
446
|
const relsXform = new RelationshipsXform();
|
|
447
|
+
|
|
424
448
|
model.worksheets.forEach(worksheet => {
|
|
425
|
-
const {
|
|
426
|
-
drawing
|
|
427
|
-
} = worksheet;
|
|
449
|
+
const {drawing} = worksheet;
|
|
428
450
|
if (drawing) {
|
|
429
451
|
drawingXform.prepare(drawing, {});
|
|
430
452
|
let xml = drawingXform.toXml(drawing);
|
|
431
|
-
zip.append(xml, {
|
|
432
|
-
|
|
433
|
-
});
|
|
453
|
+
zip.append(xml, {name: `xl/drawings/${drawing.name}.xml`});
|
|
454
|
+
|
|
434
455
|
xml = relsXform.toXml(drawing.rels);
|
|
435
|
-
zip.append(xml, {
|
|
436
|
-
name: `xl/drawings/_rels/${drawing.name}.xml.rels`
|
|
437
|
-
});
|
|
456
|
+
zip.append(xml, {name: `xl/drawings/_rels/${drawing.name}.xml.rels`});
|
|
438
457
|
}
|
|
439
458
|
});
|
|
440
459
|
}
|
|
460
|
+
|
|
441
461
|
addTables(zip, model) {
|
|
442
462
|
const tableXform = new TableXform();
|
|
463
|
+
|
|
443
464
|
model.worksheets.forEach(worksheet => {
|
|
444
|
-
const {
|
|
445
|
-
tables
|
|
446
|
-
} = worksheet;
|
|
465
|
+
const {tables} = worksheet;
|
|
447
466
|
tables.forEach(table => {
|
|
448
467
|
tableXform.prepare(table, {});
|
|
449
468
|
const tableXml = tableXform.toXml(table);
|
|
450
|
-
zip.append(tableXml, {
|
|
451
|
-
name: `xl/tables/${table.target}`
|
|
452
|
-
});
|
|
469
|
+
zip.append(tableXml, {name: `xl/tables/${table.target}`});
|
|
453
470
|
});
|
|
454
471
|
});
|
|
455
472
|
}
|
|
473
|
+
|
|
456
474
|
async addContentTypes(zip, model) {
|
|
457
475
|
const xform = new ContentTypesXform();
|
|
458
476
|
const xml = xform.toXml(model);
|
|
459
|
-
zip.append(xml, {
|
|
460
|
-
name: '[Content_Types].xml'
|
|
461
|
-
});
|
|
477
|
+
zip.append(xml, {name: '[Content_Types].xml'});
|
|
462
478
|
}
|
|
479
|
+
|
|
463
480
|
async addApp(zip, model) {
|
|
464
481
|
const xform = new AppXform();
|
|
465
482
|
const xml = xform.toXml(model);
|
|
466
|
-
zip.append(xml, {
|
|
467
|
-
name: 'docProps/app.xml'
|
|
468
|
-
});
|
|
483
|
+
zip.append(xml, {name: 'docProps/app.xml'});
|
|
469
484
|
}
|
|
485
|
+
|
|
470
486
|
async addCore(zip, model) {
|
|
471
487
|
const coreXform = new CoreXform();
|
|
472
|
-
zip.append(coreXform.toXml(model), {
|
|
473
|
-
name: 'docProps/core.xml'
|
|
474
|
-
});
|
|
488
|
+
zip.append(coreXform.toXml(model), {name: 'docProps/core.xml'});
|
|
475
489
|
}
|
|
490
|
+
|
|
476
491
|
async addThemes(zip, model) {
|
|
477
|
-
const themes = model.themes || {
|
|
478
|
-
theme1: theme1Xml
|
|
479
|
-
};
|
|
492
|
+
const themes = model.themes || {theme1: theme1Xml};
|
|
480
493
|
Object.keys(themes).forEach(name => {
|
|
481
494
|
const xml = themes[name];
|
|
482
495
|
const path = `xl/theme/${name}.xml`;
|
|
483
|
-
zip.append(xml, {
|
|
484
|
-
name: path
|
|
485
|
-
});
|
|
496
|
+
zip.append(xml, {name: path});
|
|
486
497
|
});
|
|
487
498
|
}
|
|
499
|
+
|
|
488
500
|
async addOfficeRels(zip) {
|
|
489
501
|
const xform = new RelationshipsXform();
|
|
490
|
-
const xml = xform.toXml([
|
|
491
|
-
Id: 'rId1',
|
|
492
|
-
Type: XLSX.RelType.
|
|
493
|
-
Target: '
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
Type: XLSX.RelType.CoreProperties,
|
|
497
|
-
Target: 'docProps/core.xml'
|
|
498
|
-
}, {
|
|
499
|
-
Id: 'rId3',
|
|
500
|
-
Type: XLSX.RelType.ExtenderProperties,
|
|
501
|
-
Target: 'docProps/app.xml'
|
|
502
|
-
}]);
|
|
503
|
-
zip.append(xml, {
|
|
504
|
-
name: '_rels/.rels'
|
|
505
|
-
});
|
|
502
|
+
const xml = xform.toXml([
|
|
503
|
+
{Id: 'rId1', Type: XLSX.RelType.OfficeDocument, Target: 'xl/workbook.xml'},
|
|
504
|
+
{Id: 'rId2', Type: XLSX.RelType.CoreProperties, Target: 'docProps/core.xml'},
|
|
505
|
+
{Id: 'rId3', Type: XLSX.RelType.ExtenderProperties, Target: 'docProps/app.xml'},
|
|
506
|
+
]);
|
|
507
|
+
zip.append(xml, {name: '_rels/.rels'});
|
|
506
508
|
}
|
|
509
|
+
|
|
507
510
|
async addWorkbookRels(zip, model) {
|
|
508
511
|
let count = 1;
|
|
509
|
-
const relationships = [
|
|
510
|
-
Id: `rId${count++}`,
|
|
511
|
-
Type: XLSX.RelType.
|
|
512
|
-
|
|
513
|
-
}, {
|
|
514
|
-
Id: `rId${count++}`,
|
|
515
|
-
Type: XLSX.RelType.Theme,
|
|
516
|
-
Target: 'theme/theme1.xml'
|
|
517
|
-
}];
|
|
512
|
+
const relationships = [
|
|
513
|
+
{Id: `rId${count++}`, Type: XLSX.RelType.Styles, Target: 'styles.xml'},
|
|
514
|
+
{Id: `rId${count++}`, Type: XLSX.RelType.Theme, Target: 'theme/theme1.xml'},
|
|
515
|
+
];
|
|
518
516
|
if (model.sharedStrings.count) {
|
|
519
517
|
relationships.push({
|
|
520
518
|
Id: `rId${count++}`,
|
|
521
519
|
Type: XLSX.RelType.SharedStrings,
|
|
522
|
-
Target: 'sharedStrings.xml'
|
|
520
|
+
Target: 'sharedStrings.xml',
|
|
523
521
|
});
|
|
524
522
|
}
|
|
525
523
|
model.worksheets.forEach(worksheet => {
|
|
@@ -527,38 +525,32 @@ class XLSX {
|
|
|
527
525
|
relationships.push({
|
|
528
526
|
Id: worksheet.rId,
|
|
529
527
|
Type: XLSX.RelType.Worksheet,
|
|
530
|
-
Target: `worksheets/sheet${worksheet.id}.xml
|
|
528
|
+
Target: `worksheets/sheet${worksheet.id}.xml`,
|
|
531
529
|
});
|
|
532
530
|
});
|
|
533
531
|
const xform = new RelationshipsXform();
|
|
534
532
|
const xml = xform.toXml(relationships);
|
|
535
|
-
zip.append(xml, {
|
|
536
|
-
name: 'xl/_rels/workbook.xml.rels'
|
|
537
|
-
});
|
|
533
|
+
zip.append(xml, {name: 'xl/_rels/workbook.xml.rels'});
|
|
538
534
|
}
|
|
535
|
+
|
|
539
536
|
async addSharedStrings(zip, model) {
|
|
540
537
|
if (model.sharedStrings && model.sharedStrings.count) {
|
|
541
|
-
zip.append(model.sharedStrings.xml, {
|
|
542
|
-
name: 'xl/sharedStrings.xml'
|
|
543
|
-
});
|
|
538
|
+
zip.append(model.sharedStrings.xml, {name: 'xl/sharedStrings.xml'});
|
|
544
539
|
}
|
|
545
540
|
}
|
|
541
|
+
|
|
546
542
|
async addStyles(zip, model) {
|
|
547
|
-
const {
|
|
548
|
-
xml
|
|
549
|
-
} = model.styles;
|
|
543
|
+
const {xml} = model.styles;
|
|
550
544
|
if (xml) {
|
|
551
|
-
zip.append(xml, {
|
|
552
|
-
name: 'xl/styles.xml'
|
|
553
|
-
});
|
|
545
|
+
zip.append(xml, {name: 'xl/styles.xml'});
|
|
554
546
|
}
|
|
555
547
|
}
|
|
548
|
+
|
|
556
549
|
async addWorkbook(zip, model) {
|
|
557
550
|
const xform = new WorkbookXform();
|
|
558
|
-
zip.append(xform.toXml(model), {
|
|
559
|
-
name: 'xl/workbook.xml'
|
|
560
|
-
});
|
|
551
|
+
zip.append(xform.toXml(model), {name: 'xl/workbook.xml'});
|
|
561
552
|
}
|
|
553
|
+
|
|
562
554
|
async addWorksheets(zip, model) {
|
|
563
555
|
// preparation phase
|
|
564
556
|
const worksheetXform = new WorksheetXform();
|
|
@@ -570,30 +562,26 @@ class XLSX {
|
|
|
570
562
|
model.worksheets.forEach(worksheet => {
|
|
571
563
|
let xmlStream = new XmlStream();
|
|
572
564
|
worksheetXform.render(xmlStream, worksheet);
|
|
573
|
-
zip.append(xmlStream.xml, {
|
|
574
|
-
|
|
575
|
-
});
|
|
565
|
+
zip.append(xmlStream.xml, {name: `xl/worksheets/sheet${worksheet.id}.xml`});
|
|
566
|
+
|
|
576
567
|
if (worksheet.rels && worksheet.rels.length) {
|
|
577
568
|
xmlStream = new XmlStream();
|
|
578
569
|
relationshipsXform.render(xmlStream, worksheet.rels);
|
|
579
|
-
zip.append(xmlStream.xml, {
|
|
580
|
-
name: `xl/worksheets/_rels/sheet${worksheet.id}.xml.rels`
|
|
581
|
-
});
|
|
570
|
+
zip.append(xmlStream.xml, {name: `xl/worksheets/_rels/sheet${worksheet.id}.xml.rels`});
|
|
582
571
|
}
|
|
572
|
+
|
|
583
573
|
if (worksheet.comments.length > 0) {
|
|
584
574
|
xmlStream = new XmlStream();
|
|
585
575
|
commentsXform.render(xmlStream, worksheet);
|
|
586
|
-
zip.append(xmlStream.xml, {
|
|
587
|
-
|
|
588
|
-
});
|
|
576
|
+
zip.append(xmlStream.xml, {name: `xl/comments${worksheet.id}.xml`});
|
|
577
|
+
|
|
589
578
|
xmlStream = new XmlStream();
|
|
590
579
|
vmlNotesXform.render(xmlStream, worksheet);
|
|
591
|
-
zip.append(xmlStream.xml, {
|
|
592
|
-
name: `xl/drawings/vmlDrawing${worksheet.id}.vml`
|
|
593
|
-
});
|
|
580
|
+
zip.append(xmlStream.xml, {name: `xl/drawings/vmlDrawing${worksheet.id}.vml`});
|
|
594
581
|
}
|
|
595
582
|
});
|
|
596
583
|
}
|
|
584
|
+
|
|
597
585
|
_finalize(zip) {
|
|
598
586
|
return new Promise((resolve, reject) => {
|
|
599
587
|
zip.on('finish', () => {
|
|
@@ -603,12 +591,14 @@ class XLSX {
|
|
|
603
591
|
zip.finalize();
|
|
604
592
|
});
|
|
605
593
|
}
|
|
594
|
+
|
|
606
595
|
prepareModel(model, options) {
|
|
607
596
|
// ensure following properties have sane values
|
|
608
597
|
model.creator = model.creator || 'ExcelJS';
|
|
609
598
|
model.lastModifiedBy = model.lastModifiedBy || 'ExcelJS';
|
|
610
599
|
model.created = model.created || new Date();
|
|
611
600
|
model.modified = model.modified || new Date();
|
|
601
|
+
|
|
612
602
|
model.useSharedStrings = options.useSharedStrings !== undefined ? options.useSharedStrings : true;
|
|
613
603
|
model.useStyles = options.useStyles !== undefined ? options.useStyles : true;
|
|
614
604
|
|
|
@@ -621,13 +611,15 @@ class XLSX {
|
|
|
621
611
|
// prepare all of the things before the render
|
|
622
612
|
const workbookXform = new WorkbookXform();
|
|
623
613
|
const worksheetXform = new WorksheetXform();
|
|
614
|
+
|
|
624
615
|
workbookXform.prepare(model);
|
|
616
|
+
|
|
625
617
|
const worksheetOptions = {
|
|
626
618
|
sharedStrings: model.sharedStrings,
|
|
627
619
|
styles: model.styles,
|
|
628
620
|
date1904: model.properties.date1904,
|
|
629
621
|
drawingsCount: 0,
|
|
630
|
-
media: model.media
|
|
622
|
+
media: model.media,
|
|
631
623
|
};
|
|
632
624
|
worksheetOptions.drawings = model.drawings = [];
|
|
633
625
|
worksheetOptions.commentRefs = model.commentRefs = [];
|
|
@@ -641,6 +633,7 @@ class XLSX {
|
|
|
641
633
|
table.id = tableCount;
|
|
642
634
|
model.tables.push(table);
|
|
643
635
|
});
|
|
636
|
+
|
|
644
637
|
worksheetXform.prepare(worksheet, worksheetOptions);
|
|
645
638
|
});
|
|
646
639
|
|
|
@@ -649,11 +642,10 @@ class XLSX {
|
|
|
649
642
|
|
|
650
643
|
async write(stream, options) {
|
|
651
644
|
options = options || {};
|
|
652
|
-
const {
|
|
653
|
-
model
|
|
654
|
-
} = this.workbook;
|
|
645
|
+
const {model} = this.workbook;
|
|
655
646
|
const zip = new ZipStream.ZipWriter(options.zip);
|
|
656
647
|
zip.pipe(stream);
|
|
648
|
+
|
|
657
649
|
this.prepareModel(model, options);
|
|
658
650
|
|
|
659
651
|
// render
|
|
@@ -670,8 +662,10 @@ class XLSX {
|
|
|
670
662
|
await this.addWorkbook(zip, model);
|
|
671
663
|
return this._finalize(zip);
|
|
672
664
|
}
|
|
665
|
+
|
|
673
666
|
writeFile(filename, options) {
|
|
674
667
|
const stream = fs.createWriteStream(filename);
|
|
668
|
+
|
|
675
669
|
return new Promise((resolve, reject) => {
|
|
676
670
|
stream.on('finish', () => {
|
|
677
671
|
resolve();
|
|
@@ -679,19 +673,22 @@ class XLSX {
|
|
|
679
673
|
stream.on('error', error => {
|
|
680
674
|
reject(error);
|
|
681
675
|
});
|
|
676
|
+
|
|
682
677
|
this.write(stream, options).then(() => {
|
|
683
678
|
stream.end();
|
|
684
|
-
}).catch(err
|
|
679
|
+
}).catch(err=>{
|
|
685
680
|
reject(err);
|
|
686
681
|
});
|
|
687
682
|
});
|
|
688
683
|
}
|
|
684
|
+
|
|
689
685
|
async writeBuffer(options) {
|
|
690
686
|
const stream = new StreamBuf();
|
|
691
687
|
await this.write(stream, options);
|
|
692
688
|
return stream.read();
|
|
693
689
|
}
|
|
694
690
|
}
|
|
691
|
+
|
|
695
692
|
XLSX.RelType = require('./rel-type');
|
|
693
|
+
|
|
696
694
|
module.exports = XLSX;
|
|
697
|
-
//# sourceMappingURL=xlsx.js.map
|