exceljs-lts 4.5.0 → 4.5.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/README.md +9 -0
- package/README_zh.md +7 -0
- package/dist/es5/doc/table.js +25 -0
- package/dist/es5/doc/table.js.map +1 -1
- package/dist/es5/doc/worksheet.js +41 -0
- package/dist/es5/doc/worksheet.js.map +1 -1
- package/dist/es5/xlsx/xform/sheet/worksheet-xform.js +3 -4
- package/dist/es5/xlsx/xform/sheet/worksheet-xform.js.map +1 -1
- package/dist/es5/xlsx/xlsx.js +1 -1
- package/dist/es5/xlsx/xlsx.js.map +1 -1
- package/dist/exceljs.bare.js +70 -5
- package/dist/exceljs.bare.js.map +5 -5
- package/dist/exceljs.bare.min.js +4 -4
- package/dist/exceljs.bare.min.js.map +1 -1
- package/dist/exceljs.js +70 -5
- package/dist/exceljs.js.map +5 -5
- package/dist/exceljs.min.js +5 -5
- package/dist/exceljs.min.js.map +1 -1
- package/lib/doc/table.js +37 -0
- package/lib/doc/worksheet.js +37 -0
- package/lib/xlsx/xform/sheet/worksheet-xform.js +4 -4
- package/lib/xlsx/xlsx.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worksheet-xform.js","names":["_","require","colCache","XmlStream","RelType","Merges","BaseXform","ListXform","RowXform","ColXform","DimensionXform","HyperlinkXform","MergeCellXform","DataValidationsXform","SheetPropertiesXform","SheetFormatPropertiesXform","SheetViewXform","SheetProtectionXform","PageMarginsXform","PageSetupXform","PrintOptionsXform","AutoFilterXform","PictureXform","DrawingXform","TablePartXform","RowBreaksXform","HeaderFooterXform","ConditionalFormattingsXform","ExtListXform","mergeRule","rule","extRule","Object","keys","forEach","key","value","extValue","undefined","mergeConditionalFormattings","model","extModel","length","cfMap","ruleMap","cf","ref","rules","x14Id","extCf","push","WorkSheetXform","constructor","options","maxRows","maxCols","ignoreNodes","map","sheetPr","dimension","sheetViews","tag","count","childXform","sheetFormatPr","cols","sheetData","empty","maxItems","autoFilter","mergeCells","rowBreaks","hyperlinks","pageMargins","dataValidations","pageSetup","headerFooter","printOptions","picture","drawing","sheetProtection","tableParts","conditionalFormatting","extLst","prepare","merges","comments","formulae","siFormulae","rows","conditionalFormattings","rels","nextRid","r","hyperlink","rId","Id","Type","Hyperlink","Target","target","TargetMode","comment","Comments","id","vmlDrawing","VmlDrawing","item","refAddress","decodeAddress","commentRefs","commentName","drawingRelsHash","bookImage","media","medium","type","imageId","Image","name","extension","background","image","drawingsCount","anchors","drawings","rIdImage","preImageId","anchor","range","rIdHyperLink","tooltip","tables","table","Table","columns","column","style","dxfId","styles","addDxfStyle","pivotTables","PivotTable","render","xmlStream","openXml","StdDocAttributes","openNode","WORKSHEET_ATTRIBUTES","sheetFormatPropertiesModel","properties","defaultRowHeight","dyDescent","outlineLevelCol","outlineLevelRow","defaultColWidth","sheetPropertiesModel","outlineProperties","tabColor","fitToPage","pageMarginsModel","margins","printOptionsModel","showRowColHeaders","showGridLines","horizontalCentered","verticalCentered","sheetProtectionModel","dimensions","views","rel","leafNode","closeNode","parseOpen","node","parser","each","xform","reset","includes","parseText","text","parseClose","sheetProperties","assign","reconcile","relationships","reduce","h","vmlComment","vmlDrawings","index","note","commentsMap","hyperlinkMap","address","filter","Boolean","row","cells","drawingRel","match","drawingName","backgroundRel","split","mediaIndex","tablePart","xmlns","module","exports"],"sources":["../../../../../lib/xlsx/xform/sheet/worksheet-xform.js"],"sourcesContent":["const _ = require('../../../utils/under-dash');\n\nconst colCache = require('../../../utils/col-cache');\nconst XmlStream = require('../../../utils/xml-stream');\n\nconst RelType = require('../../rel-type');\n\nconst Merges = require('./merges');\n\nconst BaseXform = require('../base-xform');\nconst ListXform = require('../list-xform');\nconst RowXform = require('./row-xform');\nconst ColXform = require('./col-xform');\nconst DimensionXform = require('./dimension-xform');\nconst HyperlinkXform = require('./hyperlink-xform');\nconst MergeCellXform = require('./merge-cell-xform');\nconst DataValidationsXform = require('./data-validations-xform');\nconst SheetPropertiesXform = require('./sheet-properties-xform');\nconst SheetFormatPropertiesXform = require('./sheet-format-properties-xform');\nconst SheetViewXform = require('./sheet-view-xform');\nconst SheetProtectionXform = require('./sheet-protection-xform');\nconst PageMarginsXform = require('./page-margins-xform');\nconst PageSetupXform = require('./page-setup-xform');\nconst PrintOptionsXform = require('./print-options-xform');\nconst AutoFilterXform = require('./auto-filter-xform');\nconst PictureXform = require('./picture-xform');\nconst DrawingXform = require('./drawing-xform');\nconst TablePartXform = require('./table-part-xform');\nconst RowBreaksXform = require('./row-breaks-xform');\nconst HeaderFooterXform = require('./header-footer-xform');\nconst ConditionalFormattingsXform = require('./cf/conditional-formattings-xform');\nconst ExtListXform = require('./ext-lst-xform');\n\nconst mergeRule = (rule, extRule) => {\n Object.keys(extRule).forEach(key => {\n const value = rule[key];\n const extValue = extRule[key];\n if (value === undefined && extValue !== undefined) {\n rule[key] = extValue;\n }\n });\n};\n\nconst mergeConditionalFormattings = (model, extModel) => {\n // conditional formattings are rendered in worksheet.conditionalFormatting and also in\n // worksheet.extLst.ext.x14:conditionalFormattings\n // some (e.g. dataBar) are even spread across both!\n if (!extModel || !extModel.length) {\n return model;\n }\n if (!model || !model.length) {\n return extModel;\n }\n\n // index model rules by x14Id\n const cfMap = {};\n const ruleMap = {};\n model.forEach(cf => {\n cfMap[cf.ref] = cf;\n cf.rules.forEach(rule => {\n const {x14Id} = rule;\n if (x14Id) {\n ruleMap[x14Id] = rule;\n }\n });\n });\n\n extModel.forEach(extCf => {\n extCf.rules.forEach(extRule => {\n const rule = ruleMap[extRule.x14Id];\n if (rule) {\n // merge with matching rule\n mergeRule(rule, extRule);\n } else if (cfMap[extCf.ref]) {\n // reuse existing cf ref\n cfMap[extCf.ref].rules.push(extRule);\n } else {\n // create new cf\n model.push({\n ref: extCf.ref,\n rules: [extRule],\n });\n }\n });\n });\n\n // need to cope with rules in extModel that don't exist in model\n return model;\n};\n\nclass WorkSheetXform extends BaseXform {\n constructor(options) {\n super();\n\n const {maxRows, maxCols, ignoreNodes} = options || {};\n\n this.ignoreNodes = ignoreNodes || [];\n\n this.map = {\n sheetPr: new SheetPropertiesXform(),\n dimension: new DimensionXform(),\n sheetViews: new ListXform({\n tag: 'sheetViews',\n count: false,\n childXform: new SheetViewXform(),\n }),\n sheetFormatPr: new SheetFormatPropertiesXform(),\n cols: new ListXform({tag: 'cols', count: false, childXform: new ColXform()}),\n sheetData: new ListXform({\n tag: 'sheetData',\n count: false,\n empty: true,\n childXform: new RowXform({maxItems: maxCols}),\n maxItems: maxRows,\n }),\n autoFilter: new AutoFilterXform(),\n mergeCells: new ListXform({tag: 'mergeCells', count: true, childXform: new MergeCellXform()}),\n rowBreaks: new RowBreaksXform(),\n hyperlinks: new ListXform({\n tag: 'hyperlinks',\n count: false,\n childXform: new HyperlinkXform(),\n }),\n pageMargins: new PageMarginsXform(),\n dataValidations: new DataValidationsXform(),\n pageSetup: new PageSetupXform(),\n headerFooter: new HeaderFooterXform(),\n printOptions: new PrintOptionsXform(),\n picture: new PictureXform(),\n drawing: new DrawingXform(),\n sheetProtection: new SheetProtectionXform(),\n tableParts: new ListXform({tag: 'tableParts', count: true, childXform: new TablePartXform()}),\n conditionalFormatting: new ConditionalFormattingsXform(),\n extLst: new ExtListXform(),\n };\n }\n\n prepare(model, options) {\n options.merges = new Merges();\n model.hyperlinks = options.hyperlinks = [];\n model.comments = options.comments = [];\n\n options.formulae = {};\n options.siFormulae = 0;\n this.map.cols.prepare(model.cols, options);\n this.map.sheetData.prepare(model.rows, options);\n this.map.conditionalFormatting.prepare(model.conditionalFormattings, options);\n\n model.mergeCells = options.merges.mergeCells;\n\n // prepare relationships\n const rels = (model.rels = []);\n\n function nextRid(r) {\n return `rId${r.length + 1}`;\n }\n\n model.hyperlinks.forEach(hyperlink => {\n const rId = nextRid(rels);\n hyperlink.rId = rId;\n rels.push({\n Id: rId,\n Type: RelType.Hyperlink,\n Target: hyperlink.target,\n TargetMode: 'External',\n });\n });\n\n // prepare comment relationships\n if (model.comments.length > 0) {\n const comment = {\n Id: nextRid(rels),\n Type: RelType.Comments,\n Target: `../comments${model.id}.xml`,\n };\n rels.push(comment);\n const vmlDrawing = {\n Id: nextRid(rels),\n Type: RelType.VmlDrawing,\n Target: `../drawings/vmlDrawing${model.id}.vml`,\n };\n rels.push(vmlDrawing);\n\n model.comments.forEach(item => {\n item.refAddress = colCache.decodeAddress(item.ref);\n });\n\n options.commentRefs.push({\n commentName: `comments${model.id}`,\n vmlDrawing: `vmlDrawing${model.id}`,\n });\n }\n\n const drawingRelsHash = [];\n let bookImage;\n model.media.forEach(medium => {\n if (medium.type === 'background') {\n const rId = nextRid(rels);\n bookImage = options.media[medium.imageId];\n rels.push({\n Id: rId,\n Type: RelType.Image,\n Target: `../media/${bookImage.name}.${bookImage.extension}`,\n });\n model.background = {\n rId,\n };\n model.image = options.media[medium.imageId];\n } else if (medium.type === 'image') {\n let {drawing} = model;\n bookImage = options.media[medium.imageId];\n if (!drawing) {\n drawing = model.drawing = {\n rId: nextRid(rels),\n name: `drawing${++options.drawingsCount}`,\n anchors: [],\n rels: [],\n };\n options.drawings.push(drawing);\n rels.push({\n Id: drawing.rId,\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing',\n Target: `../drawings/${drawing.name}.xml`,\n });\n }\n let rIdImage =\n this.preImageId === medium.imageId ? drawingRelsHash[medium.imageId] : drawingRelsHash[drawing.rels.length];\n if (!rIdImage) {\n rIdImage = nextRid(drawing.rels);\n drawingRelsHash[drawing.rels.length] = rIdImage;\n drawing.rels.push({\n Id: rIdImage,\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image',\n Target: `../media/${bookImage.name}.${bookImage.extension}`,\n });\n }\n\n const anchor = {\n picture: {\n rId: rIdImage,\n },\n range: medium.range,\n };\n if (medium.hyperlinks && medium.hyperlinks.hyperlink) {\n const rIdHyperLink = nextRid(drawing.rels);\n drawingRelsHash[drawing.rels.length] = rIdHyperLink;\n anchor.picture.hyperlinks = {\n tooltip: medium.hyperlinks.tooltip,\n rId: rIdHyperLink,\n };\n drawing.rels.push({\n Id: rIdHyperLink,\n Type: RelType.Hyperlink,\n Target: medium.hyperlinks.hyperlink,\n TargetMode: 'External',\n });\n }\n this.preImageId = medium.imageId;\n drawing.anchors.push(anchor);\n }\n });\n\n // prepare tables\n model.tables.forEach(table => {\n // relationships\n const rId = nextRid(rels);\n table.rId = rId;\n rels.push({\n Id: rId,\n Type: RelType.Table,\n Target: `../tables/${table.target}`,\n });\n\n // dynamic styles\n table.columns.forEach(column => {\n const {style} = column;\n if (style) {\n column.dxfId = options.styles.addDxfStyle(style);\n }\n });\n });\n\n // prepare pivot tables\n if ((model.pivotTables || []).length) {\n rels.push({\n Id: nextRid(rels),\n Type: RelType.PivotTable,\n Target: '../pivotTables/pivotTable1.xml',\n });\n }\n\n // prepare ext items\n this.map.extLst.prepare(model, options);\n }\n\n render(xmlStream, model) {\n xmlStream.openXml(XmlStream.StdDocAttributes);\n xmlStream.openNode('worksheet', WorkSheetXform.WORKSHEET_ATTRIBUTES);\n\n const sheetFormatPropertiesModel = model.properties\n ? {\n defaultRowHeight: model.properties.defaultRowHeight,\n dyDescent: model.properties.dyDescent,\n outlineLevelCol: model.properties.outlineLevelCol,\n outlineLevelRow: model.properties.outlineLevelRow,\n }\n : undefined;\n if (model.properties && model.properties.defaultColWidth) {\n sheetFormatPropertiesModel.defaultColWidth = model.properties.defaultColWidth;\n }\n const sheetPropertiesModel = {\n outlineProperties: model.properties && model.properties.outlineProperties,\n tabColor: model.properties && model.properties.tabColor,\n pageSetup:\n model.pageSetup && model.pageSetup.fitToPage\n ? {\n fitToPage: model.pageSetup.fitToPage,\n }\n : undefined,\n };\n const pageMarginsModel = model.pageSetup && model.pageSetup.margins;\n const printOptionsModel = {\n showRowColHeaders: model.pageSetup && model.pageSetup.showRowColHeaders,\n showGridLines: model.pageSetup && model.pageSetup.showGridLines,\n horizontalCentered: model.pageSetup && model.pageSetup.horizontalCentered,\n verticalCentered: model.pageSetup && model.pageSetup.verticalCentered,\n };\n const sheetProtectionModel = model.sheetProtection;\n\n this.map.sheetPr.render(xmlStream, sheetPropertiesModel);\n this.map.dimension.render(xmlStream, model.dimensions);\n this.map.sheetViews.render(xmlStream, model.views);\n this.map.sheetFormatPr.render(xmlStream, sheetFormatPropertiesModel);\n this.map.cols.render(xmlStream, model.cols);\n this.map.sheetData.render(xmlStream, model.rows);\n this.map.sheetProtection.render(xmlStream, sheetProtectionModel); // Note: must be after sheetData and before autoFilter\n this.map.autoFilter.render(xmlStream, model.autoFilter);\n this.map.mergeCells.render(xmlStream, model.mergeCells);\n this.map.conditionalFormatting.render(xmlStream, model.conditionalFormattings); // Note: must be before dataValidations\n this.map.dataValidations.render(xmlStream, model.dataValidations);\n\n // For some reason hyperlinks have to be after the data validations\n this.map.hyperlinks.render(xmlStream, model.hyperlinks);\n\n this.map.printOptions.render(xmlStream, printOptionsModel); // Note: must be before pageMargins\n this.map.pageMargins.render(xmlStream, pageMarginsModel);\n this.map.pageSetup.render(xmlStream, model.pageSetup);\n this.map.headerFooter.render(xmlStream, model.headerFooter);\n this.map.rowBreaks.render(xmlStream, model.rowBreaks);\n this.map.drawing.render(xmlStream, model.drawing); // Note: must be after rowBreaks\n\n if (model.rels) {\n // add a <legacyDrawing /> node for each comment\n // Note: must be after drawing and before picture, tableParts and extLst\n model.rels.forEach(rel => {\n if (rel.Type === RelType.VmlDrawing) {\n xmlStream.leafNode('legacyDrawing', {'r:id': rel.Id});\n }\n });\n }\n\n this.map.picture.render(xmlStream, model.background); // Note: must be after legacyDrawing\n this.map.tableParts.render(xmlStream, model.tables); // Note: must be after picture\n\n this.map.extLst.render(xmlStream, model); // Note: must be after tableParts\n\n xmlStream.closeNode();\n }\n\n parseOpen(node) {\n if (this.parser) {\n this.parser.parseOpen(node);\n return true;\n }\n\n if (node.name === 'worksheet') {\n _.each(this.map, xform => {\n xform.reset();\n });\n return true;\n }\n\n if (this.map[node.name] && !this.ignoreNodes.includes(node.name)) {\n this.parser = this.map[node.name];\n this.parser.parseOpen(node);\n }\n return true;\n }\n\n parseText(text) {\n if (this.parser) {\n this.parser.parseText(text);\n }\n }\n\n parseClose(name) {\n if (this.parser) {\n if (!this.parser.parseClose(name)) {\n this.parser = undefined;\n }\n return true;\n }\n switch (name) {\n case 'worksheet': {\n const properties = this.map.sheetFormatPr.model || {};\n if (this.map.sheetPr.model && this.map.sheetPr.model.tabColor) {\n properties.tabColor = this.map.sheetPr.model.tabColor;\n }\n if (this.map.sheetPr.model && this.map.sheetPr.model.outlineProperties) {\n properties.outlineProperties = this.map.sheetPr.model.outlineProperties;\n }\n const sheetProperties = {\n fitToPage:\n (this.map.sheetPr.model &&\n this.map.sheetPr.model.pageSetup &&\n this.map.sheetPr.model.pageSetup.fitToPage) ||\n false,\n margins: this.map.pageMargins.model,\n };\n const pageSetup = Object.assign(sheetProperties, this.map.pageSetup.model, this.map.printOptions.model);\n const conditionalFormattings = mergeConditionalFormattings(\n this.map.conditionalFormatting.model,\n this.map.extLst.model && this.map.extLst.model['x14:conditionalFormattings']\n );\n this.model = {\n dimensions: this.map.dimension.model,\n cols: this.map.cols.model,\n rows: this.map.sheetData.model,\n mergeCells: this.map.mergeCells.model,\n hyperlinks: this.map.hyperlinks.model,\n dataValidations: this.map.dataValidations.model,\n properties,\n views: this.map.sheetViews.model,\n pageSetup,\n headerFooter: this.map.headerFooter.model,\n background: this.map.picture.model,\n drawing: this.map.drawing.model,\n tables: this.map.tableParts.model,\n conditionalFormattings,\n };\n\n if (this.map.autoFilter.model) {\n this.model.autoFilter = this.map.autoFilter.model;\n }\n if (this.map.sheetProtection.model) {\n this.model.sheetProtection = this.map.sheetProtection.model;\n }\n\n return false;\n }\n\n default:\n // not quite sure how we get here!\n return true;\n }\n }\n\n reconcile(model, options) {\n // options.merges = new Merges();\n // options.merges.reconcile(model.mergeCells, model.rows);\n const rels = (model.relationships || []).reduce((h, rel) => {\n h[rel.Id] = rel;\n if (rel.Type === RelType.Comments) {\n model.comments = options.comments[rel.Target].comments;\n }\n if (rel.Type === RelType.VmlDrawing && model.comments && model.comments.length) {\n const vmlComment = options.vmlDrawings[rel.Target].comments;\n model.comments.forEach((comment, index) => {\n comment.note = Object.assign({}, comment.note, vmlComment[index]);\n });\n }\n return h;\n }, {});\n options.commentsMap = (model.comments || []).reduce((h, comment) => {\n if (comment.ref) {\n h[comment.ref] = comment;\n }\n return h;\n }, {});\n options.hyperlinkMap = (model.hyperlinks || []).reduce((h, hyperlink) => {\n if (hyperlink.rId) {\n h[hyperlink.address] = rels[hyperlink.rId].Target;\n }\n return h;\n }, {});\n options.formulae = {};\n\n // compact the rows and cells\n model.rows = (model.rows && model.rows.filter(Boolean)) || [];\n model.rows.forEach(row => {\n row.cells = (row.cells && row.cells.filter(Boolean)) || [];\n });\n\n this.map.cols.reconcile(model.cols, options);\n this.map.sheetData.reconcile(model.rows, options);\n this.map.conditionalFormatting.reconcile(model.conditionalFormattings, options);\n\n model.media = [];\n if (model.drawing) {\n const drawingRel = rels[model.drawing.rId];\n const match = drawingRel.Target.match(/\\/drawings\\/([a-zA-Z0-9]+)[.][a-zA-Z]{3,4}$/);\n if (match) {\n const drawingName = match[1];\n const drawing = options.drawings[drawingName];\n drawing.anchors.forEach(anchor => {\n if (anchor.medium) {\n const image = {\n type: 'image',\n imageId: anchor.medium.index,\n range: anchor.range,\n hyperlinks: anchor.picture.hyperlinks,\n };\n model.media.push(image);\n }\n });\n }\n }\n\n const backgroundRel = model.background && rels[model.background.rId];\n if (backgroundRel) {\n const target = backgroundRel.Target.split('/media/')[1];\n const imageId = options.mediaIndex && options.mediaIndex[target];\n if (imageId !== undefined) {\n model.media.push({\n type: 'background',\n imageId,\n });\n }\n }\n\n model.tables = (model.tables || []).map(tablePart => {\n const rel = rels[tablePart.rId];\n return options.tables[rel.Target];\n });\n\n delete model.relationships;\n delete model.hyperlinks;\n delete model.comments;\n }\n}\n\nWorkSheetXform.WORKSHEET_ATTRIBUTES = {\n xmlns: 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n 'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\n 'xmlns:mc': 'http://schemas.openxmlformats.org/markup-compatibility/2006',\n 'mc:Ignorable': 'x14ac',\n 'xmlns:x14ac': 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac',\n};\n\nmodule.exports = WorkSheetXform;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"worksheet-xform.js","names":["_","require","colCache","XmlStream","RelType","Merges","BaseXform","ListXform","RowXform","ColXform","DimensionXform","HyperlinkXform","MergeCellXform","DataValidationsXform","SheetPropertiesXform","SheetFormatPropertiesXform","SheetViewXform","SheetProtectionXform","PageMarginsXform","PageSetupXform","PrintOptionsXform","AutoFilterXform","PictureXform","DrawingXform","TablePartXform","RowBreaksXform","HeaderFooterXform","ConditionalFormattingsXform","ExtListXform","mergeRule","rule","extRule","Object","keys","forEach","key","value","extValue","undefined","mergeConditionalFormattings","model","extModel","length","cfMap","ruleMap","cf","ref","rules","x14Id","extCf","push","WorkSheetXform","constructor","options","maxRows","maxCols","ignoreNodes","map","sheetPr","dimension","sheetViews","tag","count","childXform","sheetFormatPr","cols","sheetData","empty","maxItems","autoFilter","mergeCells","rowBreaks","hyperlinks","pageMargins","dataValidations","pageSetup","headerFooter","printOptions","picture","drawing","sheetProtection","tableParts","conditionalFormatting","extLst","prepare","merges","comments","formulae","siFormulae","rows","conditionalFormattings","rels","nextRid","r","hyperlink","rId","Id","Type","Hyperlink","Target","target","TargetMode","comment","Comments","id","vmlDrawing","VmlDrawing","item","refAddress","decodeAddress","commentRefs","commentName","drawingRelsHash","bookImage","media","medium","type","imageId","Image","name","extension","background","image","drawingsCount","anchors","drawings","rIdImage","preImageId","anchor","range","rIdHyperLink","tooltip","tables","table","Table","columns","column","style","dxfId","styles","addDxfStyle","pivotTables","PivotTable","render","xmlStream","openXml","StdDocAttributes","openNode","WORKSHEET_ATTRIBUTES","sheetFormatPropertiesModel","properties","defaultRowHeight","dyDescent","outlineLevelCol","outlineLevelRow","defaultColWidth","sheetPropertiesModel","outlineProperties","tabColor","fitToPage","pageMarginsModel","margins","printOptionsModel","showRowColHeaders","showGridLines","horizontalCentered","verticalCentered","sheetProtectionModel","dimensions","views","rel","leafNode","closeNode","parseOpen","node","parser","each","xform","reset","includes","parseText","text","parseClose","sheetProperties","assign","reconcile","relationships","reduce","h","vmlComment","vmlDrawings","index","note","commentsMap","hyperlinkMap","address","filter","Boolean","row","cells","drawingRel","match","backgroundRel","split","mediaIndex","tablePart","xmlns","module","exports"],"sources":["../../../../../lib/xlsx/xform/sheet/worksheet-xform.js"],"sourcesContent":["const _ = require('../../../utils/under-dash');\n\nconst colCache = require('../../../utils/col-cache');\nconst XmlStream = require('../../../utils/xml-stream');\n\nconst RelType = require('../../rel-type');\n\nconst Merges = require('./merges');\n\nconst BaseXform = require('../base-xform');\nconst ListXform = require('../list-xform');\nconst RowXform = require('./row-xform');\nconst ColXform = require('./col-xform');\nconst DimensionXform = require('./dimension-xform');\nconst HyperlinkXform = require('./hyperlink-xform');\nconst MergeCellXform = require('./merge-cell-xform');\nconst DataValidationsXform = require('./data-validations-xform');\nconst SheetPropertiesXform = require('./sheet-properties-xform');\nconst SheetFormatPropertiesXform = require('./sheet-format-properties-xform');\nconst SheetViewXform = require('./sheet-view-xform');\nconst SheetProtectionXform = require('./sheet-protection-xform');\nconst PageMarginsXform = require('./page-margins-xform');\nconst PageSetupXform = require('./page-setup-xform');\nconst PrintOptionsXform = require('./print-options-xform');\nconst AutoFilterXform = require('./auto-filter-xform');\nconst PictureXform = require('./picture-xform');\nconst DrawingXform = require('./drawing-xform');\nconst TablePartXform = require('./table-part-xform');\nconst RowBreaksXform = require('./row-breaks-xform');\nconst HeaderFooterXform = require('./header-footer-xform');\nconst ConditionalFormattingsXform = require('./cf/conditional-formattings-xform');\nconst ExtListXform = require('./ext-lst-xform');\n\nconst mergeRule = (rule, extRule) => {\n Object.keys(extRule).forEach(key => {\n const value = rule[key];\n const extValue = extRule[key];\n if (value === undefined && extValue !== undefined) {\n rule[key] = extValue;\n }\n });\n};\n\nconst mergeConditionalFormattings = (model, extModel) => {\n // conditional formattings are rendered in worksheet.conditionalFormatting and also in\n // worksheet.extLst.ext.x14:conditionalFormattings\n // some (e.g. dataBar) are even spread across both!\n if (!extModel || !extModel.length) {\n return model;\n }\n if (!model || !model.length) {\n return extModel;\n }\n\n // index model rules by x14Id\n const cfMap = {};\n const ruleMap = {};\n model.forEach(cf => {\n cfMap[cf.ref] = cf;\n cf.rules.forEach(rule => {\n const {x14Id} = rule;\n if (x14Id) {\n ruleMap[x14Id] = rule;\n }\n });\n });\n\n extModel.forEach(extCf => {\n extCf.rules.forEach(extRule => {\n const rule = ruleMap[extRule.x14Id];\n if (rule) {\n // merge with matching rule\n mergeRule(rule, extRule);\n } else if (cfMap[extCf.ref]) {\n // reuse existing cf ref\n cfMap[extCf.ref].rules.push(extRule);\n } else {\n // create new cf\n model.push({\n ref: extCf.ref,\n rules: [extRule],\n });\n }\n });\n });\n\n // need to cope with rules in extModel that don't exist in model\n return model;\n};\n\nclass WorkSheetXform extends BaseXform {\n constructor(options) {\n super();\n\n const {maxRows, maxCols, ignoreNodes} = options || {};\n\n this.ignoreNodes = ignoreNodes || [];\n\n this.map = {\n sheetPr: new SheetPropertiesXform(),\n dimension: new DimensionXform(),\n sheetViews: new ListXform({\n tag: 'sheetViews',\n count: false,\n childXform: new SheetViewXform(),\n }),\n sheetFormatPr: new SheetFormatPropertiesXform(),\n cols: new ListXform({tag: 'cols', count: false, childXform: new ColXform()}),\n sheetData: new ListXform({\n tag: 'sheetData',\n count: false,\n empty: true,\n childXform: new RowXform({maxItems: maxCols}),\n maxItems: maxRows,\n }),\n autoFilter: new AutoFilterXform(),\n mergeCells: new ListXform({tag: 'mergeCells', count: true, childXform: new MergeCellXform()}),\n rowBreaks: new RowBreaksXform(),\n hyperlinks: new ListXform({\n tag: 'hyperlinks',\n count: false,\n childXform: new HyperlinkXform(),\n }),\n pageMargins: new PageMarginsXform(),\n dataValidations: new DataValidationsXform(),\n pageSetup: new PageSetupXform(),\n headerFooter: new HeaderFooterXform(),\n printOptions: new PrintOptionsXform(),\n picture: new PictureXform(),\n drawing: new DrawingXform(),\n sheetProtection: new SheetProtectionXform(),\n tableParts: new ListXform({tag: 'tableParts', count: true, childXform: new TablePartXform()}),\n conditionalFormatting: new ConditionalFormattingsXform(),\n extLst: new ExtListXform(),\n };\n }\n\n prepare(model, options) {\n options.merges = new Merges();\n model.hyperlinks = options.hyperlinks = [];\n model.comments = options.comments = [];\n\n options.formulae = {};\n options.siFormulae = 0;\n this.map.cols.prepare(model.cols, options);\n this.map.sheetData.prepare(model.rows, options);\n this.map.conditionalFormatting.prepare(model.conditionalFormattings, options);\n\n model.mergeCells = options.merges.mergeCells;\n\n // prepare relationships\n const rels = (model.rels = []);\n\n function nextRid(r) {\n return `rId${r.length + 1}`;\n }\n\n model.hyperlinks.forEach(hyperlink => {\n const rId = nextRid(rels);\n hyperlink.rId = rId;\n rels.push({\n Id: rId,\n Type: RelType.Hyperlink,\n Target: hyperlink.target,\n TargetMode: 'External',\n });\n });\n\n // prepare comment relationships\n if (model.comments.length > 0) {\n const comment = {\n Id: nextRid(rels),\n Type: RelType.Comments,\n Target: `../comments${model.id}.xml`,\n };\n rels.push(comment);\n const vmlDrawing = {\n Id: nextRid(rels),\n Type: RelType.VmlDrawing,\n Target: `../drawings/vmlDrawing${model.id}.vml`,\n };\n rels.push(vmlDrawing);\n\n model.comments.forEach(item => {\n item.refAddress = colCache.decodeAddress(item.ref);\n });\n\n options.commentRefs.push({\n commentName: `comments${model.id}`,\n vmlDrawing: `vmlDrawing${model.id}`,\n });\n }\n\n const drawingRelsHash = [];\n let bookImage;\n model.media.forEach(medium => {\n if (medium.type === 'background') {\n const rId = nextRid(rels);\n bookImage = options.media[medium.imageId];\n rels.push({\n Id: rId,\n Type: RelType.Image,\n Target: `../media/${bookImage.name}.${bookImage.extension}`,\n });\n model.background = {\n rId,\n };\n model.image = options.media[medium.imageId];\n } else if (medium.type === 'image') {\n let {drawing} = model;\n bookImage = options.media[medium.imageId];\n if (!drawing) {\n drawing = model.drawing = {\n rId: nextRid(rels),\n name: `drawing${++options.drawingsCount}`,\n anchors: [],\n rels: [],\n };\n options.drawings.push(drawing);\n rels.push({\n Id: drawing.rId,\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing',\n Target: `../drawings/${drawing.name}.xml`,\n });\n }\n let rIdImage =\n this.preImageId === medium.imageId ? drawingRelsHash[medium.imageId] : drawingRelsHash[drawing.rels.length];\n if (!rIdImage) {\n rIdImage = nextRid(drawing.rels);\n drawingRelsHash[drawing.rels.length] = rIdImage;\n drawing.rels.push({\n Id: rIdImage,\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image',\n Target: `../media/${bookImage.name}.${bookImage.extension}`,\n });\n }\n\n const anchor = {\n picture: {\n rId: rIdImage,\n },\n range: medium.range,\n };\n if (medium.hyperlinks && medium.hyperlinks.hyperlink) {\n const rIdHyperLink = nextRid(drawing.rels);\n drawingRelsHash[drawing.rels.length] = rIdHyperLink;\n anchor.picture.hyperlinks = {\n tooltip: medium.hyperlinks.tooltip,\n rId: rIdHyperLink,\n };\n drawing.rels.push({\n Id: rIdHyperLink,\n Type: RelType.Hyperlink,\n Target: medium.hyperlinks.hyperlink,\n TargetMode: 'External',\n });\n }\n this.preImageId = medium.imageId;\n drawing.anchors.push(anchor);\n }\n });\n\n // prepare tables\n model.tables.forEach(table => {\n // relationships\n const rId = nextRid(rels);\n table.rId = rId;\n rels.push({\n Id: rId,\n Type: RelType.Table,\n Target: `../tables/${table.target}`,\n });\n\n // dynamic styles\n table.columns.forEach(column => {\n const {style} = column;\n if (style) {\n column.dxfId = options.styles.addDxfStyle(style);\n }\n });\n });\n\n // prepare pivot tables\n if ((model.pivotTables || []).length) {\n rels.push({\n Id: nextRid(rels),\n Type: RelType.PivotTable,\n Target: '../pivotTables/pivotTable1.xml',\n });\n }\n\n // prepare ext items\n this.map.extLst.prepare(model, options);\n }\n\n render(xmlStream, model) {\n xmlStream.openXml(XmlStream.StdDocAttributes);\n xmlStream.openNode('worksheet', WorkSheetXform.WORKSHEET_ATTRIBUTES);\n\n const sheetFormatPropertiesModel = model.properties\n ? {\n defaultRowHeight: model.properties.defaultRowHeight,\n dyDescent: model.properties.dyDescent,\n outlineLevelCol: model.properties.outlineLevelCol,\n outlineLevelRow: model.properties.outlineLevelRow,\n }\n : undefined;\n if (model.properties && model.properties.defaultColWidth) {\n sheetFormatPropertiesModel.defaultColWidth = model.properties.defaultColWidth;\n }\n const sheetPropertiesModel = {\n outlineProperties: model.properties && model.properties.outlineProperties,\n tabColor: model.properties && model.properties.tabColor,\n pageSetup:\n model.pageSetup && model.pageSetup.fitToPage\n ? {\n fitToPage: model.pageSetup.fitToPage,\n }\n : undefined,\n };\n const pageMarginsModel = model.pageSetup && model.pageSetup.margins;\n const printOptionsModel = {\n showRowColHeaders: model.pageSetup && model.pageSetup.showRowColHeaders,\n showGridLines: model.pageSetup && model.pageSetup.showGridLines,\n horizontalCentered: model.pageSetup && model.pageSetup.horizontalCentered,\n verticalCentered: model.pageSetup && model.pageSetup.verticalCentered,\n };\n const sheetProtectionModel = model.sheetProtection;\n\n this.map.sheetPr.render(xmlStream, sheetPropertiesModel);\n this.map.dimension.render(xmlStream, model.dimensions);\n this.map.sheetViews.render(xmlStream, model.views);\n this.map.sheetFormatPr.render(xmlStream, sheetFormatPropertiesModel);\n this.map.cols.render(xmlStream, model.cols);\n this.map.sheetData.render(xmlStream, model.rows);\n this.map.sheetProtection.render(xmlStream, sheetProtectionModel); // Note: must be after sheetData and before autoFilter\n this.map.autoFilter.render(xmlStream, model.autoFilter);\n this.map.mergeCells.render(xmlStream, model.mergeCells);\n this.map.conditionalFormatting.render(xmlStream, model.conditionalFormattings); // Note: must be before dataValidations\n this.map.dataValidations.render(xmlStream, model.dataValidations);\n\n // For some reason hyperlinks have to be after the data validations\n this.map.hyperlinks.render(xmlStream, model.hyperlinks);\n\n this.map.printOptions.render(xmlStream, printOptionsModel); // Note: must be before pageMargins\n this.map.pageMargins.render(xmlStream, pageMarginsModel);\n this.map.pageSetup.render(xmlStream, model.pageSetup);\n this.map.headerFooter.render(xmlStream, model.headerFooter);\n this.map.rowBreaks.render(xmlStream, model.rowBreaks);\n this.map.drawing.render(xmlStream, model.drawing); // Note: must be after rowBreaks\n\n if (model.rels) {\n // add a <legacyDrawing /> node for each comment\n // Note: must be after drawing and before picture, tableParts and extLst\n model.rels.forEach(rel => {\n if (rel.Type === RelType.VmlDrawing) {\n xmlStream.leafNode('legacyDrawing', {'r:id': rel.Id});\n }\n });\n }\n\n this.map.picture.render(xmlStream, model.background); // Note: must be after legacyDrawing\n this.map.tableParts.render(xmlStream, model.tables); // Note: must be after picture\n\n this.map.extLst.render(xmlStream, model); // Note: must be after tableParts\n\n xmlStream.closeNode();\n }\n\n parseOpen(node) {\n if (this.parser) {\n this.parser.parseOpen(node);\n return true;\n }\n\n if (node.name === 'worksheet') {\n _.each(this.map, xform => {\n xform.reset();\n });\n return true;\n }\n\n if (this.map[node.name] && !this.ignoreNodes.includes(node.name)) {\n this.parser = this.map[node.name];\n this.parser.parseOpen(node);\n }\n return true;\n }\n\n parseText(text) {\n if (this.parser) {\n this.parser.parseText(text);\n }\n }\n\n parseClose(name) {\n if (this.parser) {\n if (!this.parser.parseClose(name)) {\n this.parser = undefined;\n }\n return true;\n }\n switch (name) {\n case 'worksheet': {\n const properties = this.map.sheetFormatPr.model || {};\n if (this.map.sheetPr.model && this.map.sheetPr.model.tabColor) {\n properties.tabColor = this.map.sheetPr.model.tabColor;\n }\n if (this.map.sheetPr.model && this.map.sheetPr.model.outlineProperties) {\n properties.outlineProperties = this.map.sheetPr.model.outlineProperties;\n }\n const sheetProperties = {\n fitToPage:\n (this.map.sheetPr.model &&\n this.map.sheetPr.model.pageSetup &&\n this.map.sheetPr.model.pageSetup.fitToPage) ||\n false,\n margins: this.map.pageMargins.model,\n };\n const pageSetup = Object.assign(sheetProperties, this.map.pageSetup.model, this.map.printOptions.model);\n const conditionalFormattings = mergeConditionalFormattings(\n this.map.conditionalFormatting.model,\n this.map.extLst.model && this.map.extLst.model['x14:conditionalFormattings']\n );\n this.model = {\n dimensions: this.map.dimension.model,\n cols: this.map.cols.model,\n rows: this.map.sheetData.model,\n mergeCells: this.map.mergeCells.model,\n hyperlinks: this.map.hyperlinks.model,\n dataValidations: this.map.dataValidations.model,\n properties,\n views: this.map.sheetViews.model,\n pageSetup,\n headerFooter: this.map.headerFooter.model,\n background: this.map.picture.model,\n drawing: this.map.drawing.model,\n tables: this.map.tableParts.model,\n conditionalFormattings,\n };\n\n if (this.map.autoFilter.model) {\n this.model.autoFilter = this.map.autoFilter.model;\n }\n if (this.map.sheetProtection.model) {\n this.model.sheetProtection = this.map.sheetProtection.model;\n }\n\n return false;\n }\n\n default:\n // not quite sure how we get here!\n return true;\n }\n }\n\n reconcile(model, options) {\n // options.merges = new Merges();\n // options.merges.reconcile(model.mergeCells, model.rows);\n const rels = (model.relationships || []).reduce((h, rel) => {\n h[rel.Id] = rel;\n if (rel.Type === RelType.Comments) {\n model.comments = options.comments[rel.Target].comments;\n }\n if (rel.Type === RelType.VmlDrawing && model.comments && model.comments.length) {\n const vmlComment = options.vmlDrawings[rel.Target].comments;\n model.comments.forEach((comment, index) => {\n comment.note = Object.assign({}, comment.note, vmlComment[index]);\n });\n }\n return h;\n }, {});\n options.commentsMap = (model.comments || []).reduce((h, comment) => {\n if (comment.ref) {\n h[comment.ref] = comment;\n }\n return h;\n }, {});\n options.hyperlinkMap = (model.hyperlinks || []).reduce((h, hyperlink) => {\n if (hyperlink.rId) {\n h[hyperlink.address] = rels[hyperlink.rId].Target;\n }\n return h;\n }, {});\n options.formulae = {};\n\n // compact the rows and cells\n model.rows = (model.rows && model.rows.filter(Boolean)) || [];\n model.rows.forEach(row => {\n row.cells = (row.cells && row.cells.filter(Boolean)) || [];\n });\n\n this.map.cols.reconcile(model.cols, options);\n this.map.sheetData.reconcile(model.rows, options);\n this.map.conditionalFormatting.reconcile(model.conditionalFormattings, options);\n\n model.media = [];\n if (model.drawing) {\n const drawingRel = rels[model.drawing.rId];\n const match =\n drawingRel && drawingRel.Target.match(/\\/drawings\\/([a-zA-Z0-9]+)[.][a-zA-Z]{3,4}$/);\n const drawing = match && options.drawings[match[1]];\n if (drawing) {\n drawing.anchors.forEach(anchor => {\n if (anchor.medium) {\n const image = {\n type: 'image',\n imageId: anchor.medium.index,\n range: anchor.range,\n hyperlinks: anchor.picture.hyperlinks,\n };\n model.media.push(image);\n }\n });\n }\n }\n\n const backgroundRel = model.background && rels[model.background.rId];\n if (backgroundRel) {\n const target = backgroundRel.Target.split('/media/')[1];\n const imageId = options.mediaIndex && options.mediaIndex[target];\n if (imageId !== undefined) {\n model.media.push({\n type: 'background',\n imageId,\n });\n }\n }\n\n model.tables = (model.tables || []).map(tablePart => {\n const rel = rels[tablePart.rId];\n return options.tables[rel.Target];\n });\n\n delete model.relationships;\n delete model.hyperlinks;\n delete model.comments;\n }\n}\n\nWorkSheetXform.WORKSHEET_ATTRIBUTES = {\n xmlns: 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n 'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\n 'xmlns:mc': 'http://schemas.openxmlformats.org/markup-compatibility/2006',\n 'mc:Ignorable': 'x14ac',\n 'xmlns:x14ac': 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac',\n};\n\nmodule.exports = WorkSheetXform;\n"],"mappings":"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","ignoreList":[]}
|
package/dist/es5/xlsx/xlsx.js
CHANGED
|
@@ -90,7 +90,7 @@ class XLSX {
|
|
|
90
90
|
Object.keys(model.drawings).forEach(name => {
|
|
91
91
|
const drawing = model.drawings[name];
|
|
92
92
|
const drawingRel = model.drawingRels[name];
|
|
93
|
-
if (drawingRel) {
|
|
93
|
+
if (drawing && drawingRel) {
|
|
94
94
|
drawingOptions.rels = drawingRel.reduce((o, rel) => {
|
|
95
95
|
o[rel.Id] = rel;
|
|
96
96
|
return o;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xlsx.js","names":["fs","require","JSZip","PassThrough","ZipStream","StreamBuf","utils","XmlStream","bufferToString","StylesXform","CoreXform","SharedStringsXform","RelationshipsXform","ContentTypesXform","AppXform","WorkbookXform","WorksheetXform","DrawingXform","TableXform","PivotCacheRecordsXform","PivotCacheDefinitionXform","PivotTableXform","CommentsXform","VmlNotesXform","theme1Xml","fsReadFileAsync","filename","options","Promise","resolve","reject","readFile","error","data","XLSX","constructor","workbook","exists","Error","stream","createReadStream","read","close","parseRels","xform","parseStream","parseWorkbook","parseSharedStrings","reconcile","model","workbookXform","worksheetXform","drawingXform","tableXform","drawingOptions","media","mediaIndex","Object","keys","drawings","forEach","name","drawing","drawingRel","drawingRels","rels","reduce","o","rel","Id","anchors","anchor","hyperlinks","picture","rId","hyperlink","Target","tableOptions","styles","values","tables","table","sheetOptions","sharedStrings","date1904","properties","comments","vmlDrawings","worksheets","worksheet","relationships","worksheetRels","sheetNo","worksheetHash","globalRels","workbookRels","sheetDefs","_processWorksheetEntry","path","push","_processCommentEntry","_processTableEntry","_processWorksheetRelsEntry","_processMediaEntry","entry","lastDot","lastIndexOf","extension","substr","streamBuf","on","length","medium","type","buffer","toBuffer","pipe","_processDrawingEntry","_processDrawingRelsEntry","_processVmlDrawingEntry","vmlDrawing","_processThemeEntry","themes","toString","createInputStream","Symbol","asyncIterator","chunks","chunk","load","Buffer","concat","base64","from","zip","loadAsync","files","dir","entryName","match","write","async","writableObjectMode","readableObjectMode","content","process","browser","chunkSize","i","substring","end","sheets","definedNames","views","calcProperties","appXform","appProperties","company","manager","coreXform","coreProperties","assign","addMedia","all","map","append","dataimg64","indexOf","addDrawings","relsXform","prepare","xml","toXml","addTables","tableXml","target","addPivotTables","pivotTables","pivotTable","pivotCacheRecordsXform","pivotCacheDefinitionXform","pivotTableXform","Type","RelType","PivotCacheRecords","PivotCacheDefinition","addContentTypes","addApp","addCore","addThemes","theme1","addOfficeRels","OfficeDocument","CoreProperties","ExtenderProperties","addWorkbookRels","count","Styles","Theme","SharedStrings","Worksheet","id","addSharedStrings","addStyles","addWorkbook","addWorksheets","relationshipsXform","commentsXform","vmlNotesXform","xmlStream","render","_finalize","finalize","prepareModel","creator","lastModifiedBy","created","Date","modified","useSharedStrings","undefined","useStyles","Mock","worksheetOptions","drawingsCount","commentRefs","tableCount","ZipWriter","writeFile","createWriteStream","then","catch","err","writeBuffer","module","exports"],"sources":["../../../lib/xlsx/xlsx.js"],"sourcesContent":["const fs = require('fs');\nconst JSZip = require('jszip');\nconst {PassThrough} = require('readable-stream');\nconst ZipStream = require('../utils/zip-stream');\nconst StreamBuf = require('../utils/stream-buf');\n\nconst utils = require('../utils/utils');\nconst XmlStream = require('../utils/xml-stream');\nconst {bufferToString} = require('../utils/browser-buffer-decode');\n\nconst StylesXform = require('./xform/style/styles-xform');\n\nconst CoreXform = require('./xform/core/core-xform');\nconst SharedStringsXform = require('./xform/strings/shared-strings-xform');\nconst RelationshipsXform = require('./xform/core/relationships-xform');\nconst ContentTypesXform = require('./xform/core/content-types-xform');\nconst AppXform = require('./xform/core/app-xform');\nconst WorkbookXform = require('./xform/book/workbook-xform');\nconst WorksheetXform = require('./xform/sheet/worksheet-xform');\nconst DrawingXform = require('./xform/drawing/drawing-xform');\nconst TableXform = require('./xform/table/table-xform');\nconst PivotCacheRecordsXform = require('./xform/pivot-table/pivot-cache-records-xform');\nconst PivotCacheDefinitionXform = require('./xform/pivot-table/pivot-cache-definition-xform');\nconst PivotTableXform = require('./xform/pivot-table/pivot-table-xform');\nconst CommentsXform = require('./xform/comment/comments-xform');\nconst VmlNotesXform = require('./xform/comment/vml-notes-xform');\n\nconst theme1Xml = require('./xml/theme1');\n\nfunction fsReadFileAsync(filename, options) {\n return new Promise((resolve, reject) => {\n fs.readFile(filename, options, (error, data) => {\n if (error) {\n reject(error);\n } else {\n resolve(data);\n }\n });\n });\n}\n\nclass XLSX {\n constructor(workbook) {\n this.workbook = workbook;\n }\n\n // ===============================================================================\n // Workbook\n // =========================================================================\n // Read\n\n async readFile(filename, options) {\n if (!(await utils.fs.exists(filename))) {\n throw new Error(`File not found: ${filename}`);\n }\n const stream = fs.createReadStream(filename);\n try {\n const workbook = await this.read(stream, options);\n stream.close();\n return workbook;\n } catch (error) {\n stream.close();\n throw error;\n }\n }\n\n parseRels(stream) {\n const xform = new RelationshipsXform();\n return xform.parseStream(stream);\n }\n\n parseWorkbook(stream) {\n const xform = new WorkbookXform();\n return xform.parseStream(stream);\n }\n\n parseSharedStrings(stream) {\n const xform = new SharedStringsXform();\n return xform.parseStream(stream);\n }\n\n reconcile(model, options) {\n const workbookXform = new WorkbookXform();\n const worksheetXform = new WorksheetXform(options);\n const drawingXform = new DrawingXform();\n const tableXform = new TableXform();\n\n workbookXform.reconcile(model);\n\n // reconcile drawings with their rels\n const drawingOptions = {\n media: model.media,\n mediaIndex: model.mediaIndex,\n };\n Object.keys(model.drawings).forEach(name => {\n const drawing = model.drawings[name];\n const drawingRel = model.drawingRels[name];\n if (drawingRel) {\n drawingOptions.rels = drawingRel.reduce((o, rel) => {\n o[rel.Id] = rel;\n return o;\n }, {});\n (drawing.anchors || []).forEach(anchor => {\n const hyperlinks = anchor.picture && anchor.picture.hyperlinks;\n if (hyperlinks && drawingOptions.rels[hyperlinks.rId]) {\n hyperlinks.hyperlink = drawingOptions.rels[hyperlinks.rId].Target;\n delete hyperlinks.rId;\n }\n });\n drawingXform.reconcile(drawing, drawingOptions);\n }\n });\n\n // reconcile tables with the default styles\n const tableOptions = {\n styles: model.styles,\n };\n Object.values(model.tables).forEach(table => {\n tableXform.reconcile(table, tableOptions);\n });\n\n const sheetOptions = {\n styles: model.styles,\n sharedStrings: model.sharedStrings,\n media: model.media,\n mediaIndex: model.mediaIndex,\n date1904: model.properties && model.properties.date1904,\n drawings: model.drawings,\n comments: model.comments,\n tables: model.tables,\n vmlDrawings: model.vmlDrawings,\n };\n model.worksheets.forEach(worksheet => {\n worksheet.relationships = model.worksheetRels[worksheet.sheetNo];\n worksheetXform.reconcile(worksheet, sheetOptions);\n });\n\n // delete unnecessary parts\n delete model.worksheetHash;\n delete model.worksheetRels;\n delete model.globalRels;\n delete model.sharedStrings;\n delete model.workbookRels;\n delete model.sheetDefs;\n delete model.styles;\n delete model.mediaIndex;\n delete model.drawings;\n delete model.drawingRels;\n delete model.vmlDrawings;\n }\n\n async _processWorksheetEntry(stream, model, sheetNo, options, path) {\n const xform = new WorksheetXform(options);\n const worksheet = await xform.parseStream(stream);\n worksheet.sheetNo = sheetNo;\n model.worksheetHash[path] = worksheet;\n model.worksheets.push(worksheet);\n }\n\n async _processCommentEntry(stream, model, name) {\n const xform = new CommentsXform();\n const comments = await xform.parseStream(stream);\n model.comments[`../${name}.xml`] = comments;\n }\n\n async _processTableEntry(stream, model, name) {\n const xform = new TableXform();\n const table = await xform.parseStream(stream);\n model.tables[`../tables/${name}.xml`] = table;\n }\n\n async _processWorksheetRelsEntry(stream, model, sheetNo) {\n const xform = new RelationshipsXform();\n const relationships = await xform.parseStream(stream);\n model.worksheetRels[sheetNo] = relationships;\n }\n\n async _processMediaEntry(entry, model, filename) {\n const lastDot = filename.lastIndexOf('.');\n // if we can't determine extension, ignore it\n if (lastDot >= 1) {\n const extension = filename.substr(lastDot + 1);\n const name = filename.substr(0, lastDot);\n await new Promise((resolve, reject) => {\n const streamBuf = new StreamBuf();\n streamBuf.on('finish', () => {\n model.mediaIndex[filename] = model.media.length;\n model.mediaIndex[name] = model.media.length;\n const medium = {\n type: 'image',\n name,\n extension,\n buffer: streamBuf.toBuffer(),\n };\n model.media.push(medium);\n resolve();\n });\n entry.on('error', error => {\n reject(error);\n });\n entry.pipe(streamBuf);\n });\n }\n }\n\n async _processDrawingEntry(entry, model, name) {\n const xform = new DrawingXform();\n const drawing = await xform.parseStream(entry);\n model.drawings[name] = drawing;\n }\n\n async _processDrawingRelsEntry(entry, model, name) {\n const xform = new RelationshipsXform();\n const relationships = await xform.parseStream(entry);\n model.drawingRels[name] = relationships;\n }\n\n async _processVmlDrawingEntry(entry, model, name) {\n const xform = new VmlNotesXform();\n const vmlDrawing = await xform.parseStream(entry);\n model.vmlDrawings[`../drawings/${name}.vml`] = vmlDrawing;\n }\n\n async _processThemeEntry(entry, model, name) {\n await new Promise((resolve, reject) => {\n // TODO: stream entry into buffer and store the xml in the model.themes[]\n const stream = new StreamBuf();\n entry.on('error', reject);\n stream.on('error', reject);\n stream.on('finish', () => {\n model.themes[name] = stream.read().toString();\n resolve();\n });\n entry.pipe(stream);\n });\n }\n\n /**\n * @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\n */\n createInputStream() {\n throw new Error(\n '`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'\n );\n }\n\n async read(stream, options) {\n // TODO: Remove once node v8 is deprecated\n // Detect and upgrade old streams\n if (!stream[Symbol.asyncIterator] && stream.pipe) {\n stream = stream.pipe(new PassThrough());\n }\n const chunks = [];\n for await (const chunk of stream) {\n chunks.push(chunk);\n }\n return this.load(Buffer.concat(chunks), options);\n }\n\n async load(data, options) {\n let buffer;\n if (options && options.base64) {\n buffer = Buffer.from(data.toString(), 'base64');\n } else {\n buffer = data;\n }\n\n const model = {\n worksheets: [],\n worksheetHash: {},\n worksheetRels: [],\n themes: {},\n media: [],\n mediaIndex: {},\n drawings: {},\n drawingRels: {},\n comments: {},\n tables: {},\n vmlDrawings: {},\n };\n\n const zip = await JSZip.loadAsync(buffer);\n for (const entry of Object.values(zip.files)) {\n /* eslint-disable no-await-in-loop */\n if (!entry.dir) {\n let entryName = entry.name;\n if (entryName[0] === '/') {\n entryName = entryName.substr(1);\n }\n let stream;\n if (\n entryName.match(/xl\\/media\\//) ||\n // themes are not parsed as stream\n entryName.match(/xl\\/theme\\/([a-zA-Z0-9]+)[.]xml/)\n ) {\n stream = new PassThrough();\n stream.write(await entry.async('nodebuffer'));\n } else {\n // use object mode to avoid buffer-string convention\n stream = new PassThrough({\n writableObjectMode: true,\n readableObjectMode: true,\n });\n let content;\n // https://www.npmjs.com/package/process\n if (process.browser) {\n // running in browser, use TextDecoder if possible\n content = bufferToString(await entry.async('nodebuffer'));\n } else {\n // running in node.js\n content = await entry.async('string');\n }\n const chunkSize = 16 * 1024;\n for (let i = 0; i < content.length; i += chunkSize) {\n stream.write(content.substring(i, i + chunkSize));\n }\n }\n stream.end();\n switch (entryName) {\n case '_rels/.rels':\n model.globalRels = await this.parseRels(stream);\n break;\n\n case 'xl/workbook.xml': {\n const workbook = await this.parseWorkbook(stream);\n model.sheets = workbook.sheets;\n model.definedNames = workbook.definedNames;\n model.views = workbook.views;\n model.properties = workbook.properties;\n model.calcProperties = workbook.calcProperties;\n break;\n }\n\n case 'xl/_rels/workbook.xml.rels':\n model.workbookRels = await this.parseRels(stream);\n break;\n\n case 'xl/sharedStrings.xml':\n model.sharedStrings = new SharedStringsXform();\n await model.sharedStrings.parseStream(stream);\n break;\n\n case 'xl/styles.xml':\n model.styles = new StylesXform();\n await model.styles.parseStream(stream);\n break;\n\n case 'docProps/app.xml': {\n const appXform = new AppXform();\n const appProperties = await appXform.parseStream(stream);\n model.company = appProperties.company;\n model.manager = appProperties.manager;\n break;\n }\n\n case 'docProps/core.xml': {\n const coreXform = new CoreXform();\n const coreProperties = await coreXform.parseStream(stream);\n Object.assign(model, coreProperties);\n break;\n }\n\n default: {\n let match = entryName.match(/xl\\/worksheets\\/sheet(\\d+)[.]xml/);\n if (match) {\n await this._processWorksheetEntry(stream, model, match[1], options, entryName);\n break;\n }\n match = entryName.match(/xl\\/worksheets\\/_rels\\/sheet(\\d+)[.]xml.rels/);\n if (match) {\n await this._processWorksheetRelsEntry(stream, model, match[1]);\n break;\n }\n match = entryName.match(/xl\\/theme\\/([a-zA-Z0-9]+)[.]xml/);\n if (match) {\n await this._processThemeEntry(stream, model, match[1]);\n break;\n }\n match = entryName.match(/xl\\/media\\/([a-zA-Z0-9]+[.][a-zA-Z0-9]{3,4})$/);\n if (match) {\n await this._processMediaEntry(stream, model, match[1]);\n break;\n }\n match = entryName.match(/xl\\/drawings\\/([a-zA-Z0-9]+)[.]xml/);\n if (match) {\n await this._processDrawingEntry(stream, model, match[1]);\n break;\n }\n match = entryName.match(/xl\\/(comments\\d+)[.]xml/);\n if (match) {\n await this._processCommentEntry(stream, model, match[1]);\n break;\n }\n match = entryName.match(/xl\\/tables\\/(table\\d+)[.]xml/);\n if (match) {\n await this._processTableEntry(stream, model, match[1]);\n break;\n }\n match = entryName.match(/xl\\/drawings\\/_rels\\/([a-zA-Z0-9]+)[.]xml[.]rels/);\n if (match) {\n await this._processDrawingRelsEntry(stream, model, match[1]);\n break;\n }\n match = entryName.match(/xl\\/drawings\\/(vmlDrawing\\d+)[.]vml/);\n if (match) {\n await this._processVmlDrawingEntry(stream, model, match[1]);\n break;\n }\n }\n }\n }\n }\n\n this.reconcile(model, options);\n\n // apply model\n this.workbook.model = model;\n return this.workbook;\n }\n\n // =========================================================================\n // Write\n\n async addMedia(zip, model) {\n await Promise.all(\n model.media.map(async medium => {\n if (medium.type === 'image') {\n const filename = `xl/media/${medium.name}.${medium.extension}`;\n if (medium.filename) {\n const data = await fsReadFileAsync(medium.filename);\n return zip.append(data, {name: filename});\n }\n if (medium.buffer) {\n return zip.append(medium.buffer, {name: filename});\n }\n if (medium.base64) {\n const dataimg64 = medium.base64;\n const content = dataimg64.substring(dataimg64.indexOf(',') + 1);\n return zip.append(content, {name: filename, base64: true});\n }\n }\n throw new Error('Unsupported media');\n })\n );\n }\n\n addDrawings(zip, model) {\n const drawingXform = new DrawingXform();\n const relsXform = new RelationshipsXform();\n\n model.worksheets.forEach(worksheet => {\n const {drawing} = worksheet;\n if (drawing) {\n drawingXform.prepare(drawing, {});\n let xml = drawingXform.toXml(drawing);\n zip.append(xml, {name: `xl/drawings/${drawing.name}.xml`});\n\n xml = relsXform.toXml(drawing.rels);\n zip.append(xml, {name: `xl/drawings/_rels/${drawing.name}.xml.rels`});\n }\n });\n }\n\n addTables(zip, model) {\n const tableXform = new TableXform();\n\n model.worksheets.forEach(worksheet => {\n const {tables} = worksheet;\n tables.forEach(table => {\n tableXform.prepare(table, {});\n const tableXml = tableXform.toXml(table);\n zip.append(tableXml, {name: `xl/tables/${table.target}`});\n });\n });\n }\n\n addPivotTables(zip, model) {\n if (!model.pivotTables.length) return;\n\n const pivotTable = model.pivotTables[0];\n\n const pivotCacheRecordsXform = new PivotCacheRecordsXform();\n const pivotCacheDefinitionXform = new PivotCacheDefinitionXform();\n const pivotTableXform = new PivotTableXform();\n const relsXform = new RelationshipsXform();\n\n // pivot cache records\n // --------------------------------------------------\n // copy of the source data.\n //\n // Note: cells in the columns of the source data which are part\n // of the \"rows\" or \"columns\" of the pivot table configuration are\n // replaced by references to their __cache field__ identifiers.\n // See \"pivot cache definition\" below.\n\n let xml = pivotCacheRecordsXform.toXml(pivotTable);\n zip.append(xml, {name: 'xl/pivotCache/pivotCacheRecords1.xml'});\n\n // pivot cache definition\n // --------------------------------------------------\n // cache source (source data):\n // ref=\"A1:E7\" on sheet=\"Sheet1\"\n // cache fields:\n // - 0: \"A\" (a1, a2, a3)\n // - 1: \"B\" (b1, b2)\n // - ...\n\n xml = pivotCacheDefinitionXform.toXml(pivotTable);\n zip.append(xml, {name: 'xl/pivotCache/pivotCacheDefinition1.xml'});\n\n xml = relsXform.toXml([\n {\n Id: 'rId1',\n Type: XLSX.RelType.PivotCacheRecords,\n Target: 'pivotCacheRecords1.xml',\n },\n ]);\n zip.append(xml, {name: 'xl/pivotCache/_rels/pivotCacheDefinition1.xml.rels'});\n\n // pivot tables (on destination worksheet)\n // --------------------------------------------------\n // location: ref=\"A3:E15\"\n // pivotFields\n // rowFields and rowItems\n // colFields and colItems\n // dataFields\n // pivotTableStyleInfo\n\n xml = pivotTableXform.toXml(pivotTable);\n zip.append(xml, {name: 'xl/pivotTables/pivotTable1.xml'});\n\n xml = relsXform.toXml([\n {\n Id: 'rId1',\n Type: XLSX.RelType.PivotCacheDefinition,\n Target: '../pivotCache/pivotCacheDefinition1.xml',\n },\n ]);\n zip.append(xml, {name: 'xl/pivotTables/_rels/pivotTable1.xml.rels'});\n }\n\n async addContentTypes(zip, model) {\n const xform = new ContentTypesXform();\n const xml = xform.toXml(model);\n zip.append(xml, {name: '[Content_Types].xml'});\n }\n\n async addApp(zip, model) {\n const xform = new AppXform();\n const xml = xform.toXml(model);\n zip.append(xml, {name: 'docProps/app.xml'});\n }\n\n async addCore(zip, model) {\n const coreXform = new CoreXform();\n zip.append(coreXform.toXml(model), {name: 'docProps/core.xml'});\n }\n\n async addThemes(zip, model) {\n const themes = model.themes || {theme1: theme1Xml};\n Object.keys(themes).forEach(name => {\n const xml = themes[name];\n const path = `xl/theme/${name}.xml`;\n zip.append(xml, {name: path});\n });\n }\n\n async addOfficeRels(zip) {\n const xform = new RelationshipsXform();\n const xml = xform.toXml([\n {Id: 'rId1', Type: XLSX.RelType.OfficeDocument, Target: 'xl/workbook.xml'},\n {Id: 'rId2', Type: XLSX.RelType.CoreProperties, Target: 'docProps/core.xml'},\n {Id: 'rId3', Type: XLSX.RelType.ExtenderProperties, Target: 'docProps/app.xml'},\n ]);\n zip.append(xml, {name: '_rels/.rels'});\n }\n\n async addWorkbookRels(zip, model) {\n let count = 1;\n const relationships = [\n {Id: `rId${count++}`, Type: XLSX.RelType.Styles, Target: 'styles.xml'},\n {Id: `rId${count++}`, Type: XLSX.RelType.Theme, Target: 'theme/theme1.xml'},\n ];\n if (model.sharedStrings.count) {\n relationships.push({\n Id: `rId${count++}`,\n Type: XLSX.RelType.SharedStrings,\n Target: 'sharedStrings.xml',\n });\n }\n if ((model.pivotTables || []).length) {\n const pivotTable = model.pivotTables[0];\n pivotTable.rId = `rId${count++}`;\n relationships.push({\n Id: pivotTable.rId,\n Type: XLSX.RelType.PivotCacheDefinition,\n Target: 'pivotCache/pivotCacheDefinition1.xml',\n });\n }\n model.worksheets.forEach(worksheet => {\n worksheet.rId = `rId${count++}`;\n relationships.push({\n Id: worksheet.rId,\n Type: XLSX.RelType.Worksheet,\n Target: `worksheets/sheet${worksheet.id}.xml`,\n });\n });\n const xform = new RelationshipsXform();\n const xml = xform.toXml(relationships);\n zip.append(xml, {name: 'xl/_rels/workbook.xml.rels'});\n }\n\n async addSharedStrings(zip, model) {\n if (model.sharedStrings && model.sharedStrings.count) {\n zip.append(model.sharedStrings.xml, {name: 'xl/sharedStrings.xml'});\n }\n }\n\n async addStyles(zip, model) {\n const {xml} = model.styles;\n if (xml) {\n zip.append(xml, {name: 'xl/styles.xml'});\n }\n }\n\n async addWorkbook(zip, model) {\n const xform = new WorkbookXform();\n zip.append(xform.toXml(model), {name: 'xl/workbook.xml'});\n }\n\n async addWorksheets(zip, model) {\n // preparation phase\n const worksheetXform = new WorksheetXform();\n const relationshipsXform = new RelationshipsXform();\n const commentsXform = new CommentsXform();\n const vmlNotesXform = new VmlNotesXform();\n\n // write sheets\n model.worksheets.forEach(worksheet => {\n let xmlStream = new XmlStream();\n worksheetXform.render(xmlStream, worksheet);\n zip.append(xmlStream.xml, {name: `xl/worksheets/sheet${worksheet.id}.xml`});\n\n if (worksheet.rels && worksheet.rels.length) {\n xmlStream = new XmlStream();\n relationshipsXform.render(xmlStream, worksheet.rels);\n zip.append(xmlStream.xml, {name: `xl/worksheets/_rels/sheet${worksheet.id}.xml.rels`});\n }\n\n if (worksheet.comments.length > 0) {\n xmlStream = new XmlStream();\n commentsXform.render(xmlStream, worksheet);\n zip.append(xmlStream.xml, {name: `xl/comments${worksheet.id}.xml`});\n\n xmlStream = new XmlStream();\n vmlNotesXform.render(xmlStream, worksheet);\n zip.append(xmlStream.xml, {name: `xl/drawings/vmlDrawing${worksheet.id}.vml`});\n }\n });\n }\n\n _finalize(zip) {\n return new Promise((resolve, reject) => {\n zip.on('finish', () => {\n resolve(this);\n });\n zip.on('error', reject);\n zip.finalize();\n });\n }\n\n prepareModel(model, options) {\n // ensure following properties have sane values\n model.creator = model.creator || 'ExcelJS';\n model.lastModifiedBy = model.lastModifiedBy || 'ExcelJS';\n model.created = model.created || new Date();\n model.modified = model.modified || new Date();\n\n model.useSharedStrings = options.useSharedStrings !== undefined ? options.useSharedStrings : true;\n model.useStyles = options.useStyles !== undefined ? options.useStyles : true;\n\n // Manage the shared strings\n model.sharedStrings = new SharedStringsXform();\n\n // add a style manager to handle cell formats, fonts, etc.\n model.styles = model.useStyles ? new StylesXform(true) : new StylesXform.Mock();\n\n // prepare all of the things before the render\n const workbookXform = new WorkbookXform();\n const worksheetXform = new WorksheetXform();\n\n workbookXform.prepare(model);\n\n const worksheetOptions = {\n sharedStrings: model.sharedStrings,\n styles: model.styles,\n date1904: model.properties.date1904,\n drawingsCount: 0,\n media: model.media,\n };\n worksheetOptions.drawings = model.drawings = [];\n worksheetOptions.commentRefs = model.commentRefs = [];\n let tableCount = 0;\n model.tables = [];\n model.worksheets.forEach(worksheet => {\n // assign unique filenames to tables\n worksheet.tables.forEach(table => {\n tableCount++;\n table.target = `table${tableCount}.xml`;\n table.id = tableCount;\n model.tables.push(table);\n });\n\n worksheetXform.prepare(worksheet, worksheetOptions);\n });\n\n // TODO: workbook drawing list\n }\n\n async write(stream, options) {\n options = options || {};\n const {model} = this.workbook;\n const zip = new ZipStream.ZipWriter(options.zip);\n zip.pipe(stream);\n\n this.prepareModel(model, options);\n\n // render\n await this.addContentTypes(zip, model);\n await this.addOfficeRels(zip, model);\n await this.addWorkbookRels(zip, model);\n await this.addWorksheets(zip, model);\n await this.addSharedStrings(zip, model); // always after worksheets\n await this.addDrawings(zip, model);\n await this.addTables(zip, model);\n await this.addPivotTables(zip, model);\n await Promise.all([this.addThemes(zip, model), this.addStyles(zip, model)]);\n await this.addMedia(zip, model);\n await Promise.all([this.addApp(zip, model), this.addCore(zip, model)]);\n await this.addWorkbook(zip, model);\n return this._finalize(zip);\n }\n\n writeFile(filename, options) {\n const stream = fs.createWriteStream(filename);\n\n return new Promise((resolve, reject) => {\n stream.on('finish', () => {\n resolve();\n });\n stream.on('error', error => {\n reject(error);\n });\n\n this.write(stream, options)\n .then(() => {\n stream.end();\n })\n .catch(err => {\n reject(err);\n });\n });\n }\n\n async writeBuffer(options) {\n const stream = new StreamBuf();\n await this.write(stream, options);\n return stream.read();\n }\n}\n\nXLSX.RelType = require('./rel-type');\n\nmodule.exports = XLSX;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"xlsx.js","names":["fs","require","JSZip","PassThrough","ZipStream","StreamBuf","utils","XmlStream","bufferToString","StylesXform","CoreXform","SharedStringsXform","RelationshipsXform","ContentTypesXform","AppXform","WorkbookXform","WorksheetXform","DrawingXform","TableXform","PivotCacheRecordsXform","PivotCacheDefinitionXform","PivotTableXform","CommentsXform","VmlNotesXform","theme1Xml","fsReadFileAsync","filename","options","Promise","resolve","reject","readFile","error","data","XLSX","constructor","workbook","exists","Error","stream","createReadStream","read","close","parseRels","xform","parseStream","parseWorkbook","parseSharedStrings","reconcile","model","workbookXform","worksheetXform","drawingXform","tableXform","drawingOptions","media","mediaIndex","Object","keys","drawings","forEach","name","drawing","drawingRel","drawingRels","rels","reduce","o","rel","Id","anchors","anchor","hyperlinks","picture","rId","hyperlink","Target","tableOptions","styles","values","tables","table","sheetOptions","sharedStrings","date1904","properties","comments","vmlDrawings","worksheets","worksheet","relationships","worksheetRels","sheetNo","worksheetHash","globalRels","workbookRels","sheetDefs","_processWorksheetEntry","path","push","_processCommentEntry","_processTableEntry","_processWorksheetRelsEntry","_processMediaEntry","entry","lastDot","lastIndexOf","extension","substr","streamBuf","on","length","medium","type","buffer","toBuffer","pipe","_processDrawingEntry","_processDrawingRelsEntry","_processVmlDrawingEntry","vmlDrawing","_processThemeEntry","themes","toString","createInputStream","Symbol","asyncIterator","chunks","chunk","load","Buffer","concat","base64","from","zip","loadAsync","files","dir","entryName","match","write","async","writableObjectMode","readableObjectMode","content","process","browser","chunkSize","i","substring","end","sheets","definedNames","views","calcProperties","appXform","appProperties","company","manager","coreXform","coreProperties","assign","addMedia","all","map","append","dataimg64","indexOf","addDrawings","relsXform","prepare","xml","toXml","addTables","tableXml","target","addPivotTables","pivotTables","pivotTable","pivotCacheRecordsXform","pivotCacheDefinitionXform","pivotTableXform","Type","RelType","PivotCacheRecords","PivotCacheDefinition","addContentTypes","addApp","addCore","addThemes","theme1","addOfficeRels","OfficeDocument","CoreProperties","ExtenderProperties","addWorkbookRels","count","Styles","Theme","SharedStrings","Worksheet","id","addSharedStrings","addStyles","addWorkbook","addWorksheets","relationshipsXform","commentsXform","vmlNotesXform","xmlStream","render","_finalize","finalize","prepareModel","creator","lastModifiedBy","created","Date","modified","useSharedStrings","undefined","useStyles","Mock","worksheetOptions","drawingsCount","commentRefs","tableCount","ZipWriter","writeFile","createWriteStream","then","catch","err","writeBuffer","module","exports"],"sources":["../../../lib/xlsx/xlsx.js"],"sourcesContent":["const fs = require('fs');\nconst JSZip = require('jszip');\nconst {PassThrough} = require('readable-stream');\nconst ZipStream = require('../utils/zip-stream');\nconst StreamBuf = require('../utils/stream-buf');\n\nconst utils = require('../utils/utils');\nconst XmlStream = require('../utils/xml-stream');\nconst {bufferToString} = require('../utils/browser-buffer-decode');\n\nconst StylesXform = require('./xform/style/styles-xform');\n\nconst CoreXform = require('./xform/core/core-xform');\nconst SharedStringsXform = require('./xform/strings/shared-strings-xform');\nconst RelationshipsXform = require('./xform/core/relationships-xform');\nconst ContentTypesXform = require('./xform/core/content-types-xform');\nconst AppXform = require('./xform/core/app-xform');\nconst WorkbookXform = require('./xform/book/workbook-xform');\nconst WorksheetXform = require('./xform/sheet/worksheet-xform');\nconst DrawingXform = require('./xform/drawing/drawing-xform');\nconst TableXform = require('./xform/table/table-xform');\nconst PivotCacheRecordsXform = require('./xform/pivot-table/pivot-cache-records-xform');\nconst PivotCacheDefinitionXform = require('./xform/pivot-table/pivot-cache-definition-xform');\nconst PivotTableXform = require('./xform/pivot-table/pivot-table-xform');\nconst CommentsXform = require('./xform/comment/comments-xform');\nconst VmlNotesXform = require('./xform/comment/vml-notes-xform');\n\nconst theme1Xml = require('./xml/theme1');\n\nfunction fsReadFileAsync(filename, options) {\n return new Promise((resolve, reject) => {\n fs.readFile(filename, options, (error, data) => {\n if (error) {\n reject(error);\n } else {\n resolve(data);\n }\n });\n });\n}\n\nclass XLSX {\n constructor(workbook) {\n this.workbook = workbook;\n }\n\n // ===============================================================================\n // Workbook\n // =========================================================================\n // Read\n\n async readFile(filename, options) {\n if (!(await utils.fs.exists(filename))) {\n throw new Error(`File not found: ${filename}`);\n }\n const stream = fs.createReadStream(filename);\n try {\n const workbook = await this.read(stream, options);\n stream.close();\n return workbook;\n } catch (error) {\n stream.close();\n throw error;\n }\n }\n\n parseRels(stream) {\n const xform = new RelationshipsXform();\n return xform.parseStream(stream);\n }\n\n parseWorkbook(stream) {\n const xform = new WorkbookXform();\n return xform.parseStream(stream);\n }\n\n parseSharedStrings(stream) {\n const xform = new SharedStringsXform();\n return xform.parseStream(stream);\n }\n\n reconcile(model, options) {\n const workbookXform = new WorkbookXform();\n const worksheetXform = new WorksheetXform(options);\n const drawingXform = new DrawingXform();\n const tableXform = new TableXform();\n\n workbookXform.reconcile(model);\n\n // reconcile drawings with their rels\n const drawingOptions = {\n media: model.media,\n mediaIndex: model.mediaIndex,\n };\n Object.keys(model.drawings).forEach(name => {\n const drawing = model.drawings[name];\n const drawingRel = model.drawingRels[name];\n if (drawing && drawingRel) {\n drawingOptions.rels = drawingRel.reduce((o, rel) => {\n o[rel.Id] = rel;\n return o;\n }, {});\n (drawing.anchors || []).forEach(anchor => {\n const hyperlinks = anchor.picture && anchor.picture.hyperlinks;\n if (hyperlinks && drawingOptions.rels[hyperlinks.rId]) {\n hyperlinks.hyperlink = drawingOptions.rels[hyperlinks.rId].Target;\n delete hyperlinks.rId;\n }\n });\n drawingXform.reconcile(drawing, drawingOptions);\n }\n });\n\n // reconcile tables with the default styles\n const tableOptions = {\n styles: model.styles,\n };\n Object.values(model.tables).forEach(table => {\n tableXform.reconcile(table, tableOptions);\n });\n\n const sheetOptions = {\n styles: model.styles,\n sharedStrings: model.sharedStrings,\n media: model.media,\n mediaIndex: model.mediaIndex,\n date1904: model.properties && model.properties.date1904,\n drawings: model.drawings,\n comments: model.comments,\n tables: model.tables,\n vmlDrawings: model.vmlDrawings,\n };\n model.worksheets.forEach(worksheet => {\n worksheet.relationships = model.worksheetRels[worksheet.sheetNo];\n worksheetXform.reconcile(worksheet, sheetOptions);\n });\n\n // delete unnecessary parts\n delete model.worksheetHash;\n delete model.worksheetRels;\n delete model.globalRels;\n delete model.sharedStrings;\n delete model.workbookRels;\n delete model.sheetDefs;\n delete model.styles;\n delete model.mediaIndex;\n delete model.drawings;\n delete model.drawingRels;\n delete model.vmlDrawings;\n }\n\n async _processWorksheetEntry(stream, model, sheetNo, options, path) {\n const xform = new WorksheetXform(options);\n const worksheet = await xform.parseStream(stream);\n worksheet.sheetNo = sheetNo;\n model.worksheetHash[path] = worksheet;\n model.worksheets.push(worksheet);\n }\n\n async _processCommentEntry(stream, model, name) {\n const xform = new CommentsXform();\n const comments = await xform.parseStream(stream);\n model.comments[`../${name}.xml`] = comments;\n }\n\n async _processTableEntry(stream, model, name) {\n const xform = new TableXform();\n const table = await xform.parseStream(stream);\n model.tables[`../tables/${name}.xml`] = table;\n }\n\n async _processWorksheetRelsEntry(stream, model, sheetNo) {\n const xform = new RelationshipsXform();\n const relationships = await xform.parseStream(stream);\n model.worksheetRels[sheetNo] = relationships;\n }\n\n async _processMediaEntry(entry, model, filename) {\n const lastDot = filename.lastIndexOf('.');\n // if we can't determine extension, ignore it\n if (lastDot >= 1) {\n const extension = filename.substr(lastDot + 1);\n const name = filename.substr(0, lastDot);\n await new Promise((resolve, reject) => {\n const streamBuf = new StreamBuf();\n streamBuf.on('finish', () => {\n model.mediaIndex[filename] = model.media.length;\n model.mediaIndex[name] = model.media.length;\n const medium = {\n type: 'image',\n name,\n extension,\n buffer: streamBuf.toBuffer(),\n };\n model.media.push(medium);\n resolve();\n });\n entry.on('error', error => {\n reject(error);\n });\n entry.pipe(streamBuf);\n });\n }\n }\n\n async _processDrawingEntry(entry, model, name) {\n const xform = new DrawingXform();\n const drawing = await xform.parseStream(entry);\n model.drawings[name] = drawing;\n }\n\n async _processDrawingRelsEntry(entry, model, name) {\n const xform = new RelationshipsXform();\n const relationships = await xform.parseStream(entry);\n model.drawingRels[name] = relationships;\n }\n\n async _processVmlDrawingEntry(entry, model, name) {\n const xform = new VmlNotesXform();\n const vmlDrawing = await xform.parseStream(entry);\n model.vmlDrawings[`../drawings/${name}.vml`] = vmlDrawing;\n }\n\n async _processThemeEntry(entry, model, name) {\n await new Promise((resolve, reject) => {\n // TODO: stream entry into buffer and store the xml in the model.themes[]\n const stream = new StreamBuf();\n entry.on('error', reject);\n stream.on('error', reject);\n stream.on('finish', () => {\n model.themes[name] = stream.read().toString();\n resolve();\n });\n entry.pipe(stream);\n });\n }\n\n /**\n * @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\n */\n createInputStream() {\n throw new Error(\n '`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'\n );\n }\n\n async read(stream, options) {\n // TODO: Remove once node v8 is deprecated\n // Detect and upgrade old streams\n if (!stream[Symbol.asyncIterator] && stream.pipe) {\n stream = stream.pipe(new PassThrough());\n }\n const chunks = [];\n for await (const chunk of stream) {\n chunks.push(chunk);\n }\n return this.load(Buffer.concat(chunks), options);\n }\n\n async load(data, options) {\n let buffer;\n if (options && options.base64) {\n buffer = Buffer.from(data.toString(), 'base64');\n } else {\n buffer = data;\n }\n\n const model = {\n worksheets: [],\n worksheetHash: {},\n worksheetRels: [],\n themes: {},\n media: [],\n mediaIndex: {},\n drawings: {},\n drawingRels: {},\n comments: {},\n tables: {},\n vmlDrawings: {},\n };\n\n const zip = await JSZip.loadAsync(buffer);\n for (const entry of Object.values(zip.files)) {\n /* eslint-disable no-await-in-loop */\n if (!entry.dir) {\n let entryName = entry.name;\n if (entryName[0] === '/') {\n entryName = entryName.substr(1);\n }\n let stream;\n if (\n entryName.match(/xl\\/media\\//) ||\n // themes are not parsed as stream\n entryName.match(/xl\\/theme\\/([a-zA-Z0-9]+)[.]xml/)\n ) {\n stream = new PassThrough();\n stream.write(await entry.async('nodebuffer'));\n } else {\n // use object mode to avoid buffer-string convention\n stream = new PassThrough({\n writableObjectMode: true,\n readableObjectMode: true,\n });\n let content;\n // https://www.npmjs.com/package/process\n if (process.browser) {\n // running in browser, use TextDecoder if possible\n content = bufferToString(await entry.async('nodebuffer'));\n } else {\n // running in node.js\n content = await entry.async('string');\n }\n const chunkSize = 16 * 1024;\n for (let i = 0; i < content.length; i += chunkSize) {\n stream.write(content.substring(i, i + chunkSize));\n }\n }\n stream.end();\n switch (entryName) {\n case '_rels/.rels':\n model.globalRels = await this.parseRels(stream);\n break;\n\n case 'xl/workbook.xml': {\n const workbook = await this.parseWorkbook(stream);\n model.sheets = workbook.sheets;\n model.definedNames = workbook.definedNames;\n model.views = workbook.views;\n model.properties = workbook.properties;\n model.calcProperties = workbook.calcProperties;\n break;\n }\n\n case 'xl/_rels/workbook.xml.rels':\n model.workbookRels = await this.parseRels(stream);\n break;\n\n case 'xl/sharedStrings.xml':\n model.sharedStrings = new SharedStringsXform();\n await model.sharedStrings.parseStream(stream);\n break;\n\n case 'xl/styles.xml':\n model.styles = new StylesXform();\n await model.styles.parseStream(stream);\n break;\n\n case 'docProps/app.xml': {\n const appXform = new AppXform();\n const appProperties = await appXform.parseStream(stream);\n model.company = appProperties.company;\n model.manager = appProperties.manager;\n break;\n }\n\n case 'docProps/core.xml': {\n const coreXform = new CoreXform();\n const coreProperties = await coreXform.parseStream(stream);\n Object.assign(model, coreProperties);\n break;\n }\n\n default: {\n let match = entryName.match(/xl\\/worksheets\\/sheet(\\d+)[.]xml/);\n if (match) {\n await this._processWorksheetEntry(stream, model, match[1], options, entryName);\n break;\n }\n match = entryName.match(/xl\\/worksheets\\/_rels\\/sheet(\\d+)[.]xml.rels/);\n if (match) {\n await this._processWorksheetRelsEntry(stream, model, match[1]);\n break;\n }\n match = entryName.match(/xl\\/theme\\/([a-zA-Z0-9]+)[.]xml/);\n if (match) {\n await this._processThemeEntry(stream, model, match[1]);\n break;\n }\n match = entryName.match(/xl\\/media\\/([a-zA-Z0-9]+[.][a-zA-Z0-9]{3,4})$/);\n if (match) {\n await this._processMediaEntry(stream, model, match[1]);\n break;\n }\n match = entryName.match(/xl\\/drawings\\/([a-zA-Z0-9]+)[.]xml/);\n if (match) {\n await this._processDrawingEntry(stream, model, match[1]);\n break;\n }\n match = entryName.match(/xl\\/(comments\\d+)[.]xml/);\n if (match) {\n await this._processCommentEntry(stream, model, match[1]);\n break;\n }\n match = entryName.match(/xl\\/tables\\/(table\\d+)[.]xml/);\n if (match) {\n await this._processTableEntry(stream, model, match[1]);\n break;\n }\n match = entryName.match(/xl\\/drawings\\/_rels\\/([a-zA-Z0-9]+)[.]xml[.]rels/);\n if (match) {\n await this._processDrawingRelsEntry(stream, model, match[1]);\n break;\n }\n match = entryName.match(/xl\\/drawings\\/(vmlDrawing\\d+)[.]vml/);\n if (match) {\n await this._processVmlDrawingEntry(stream, model, match[1]);\n break;\n }\n }\n }\n }\n }\n\n this.reconcile(model, options);\n\n // apply model\n this.workbook.model = model;\n return this.workbook;\n }\n\n // =========================================================================\n // Write\n\n async addMedia(zip, model) {\n await Promise.all(\n model.media.map(async medium => {\n if (medium.type === 'image') {\n const filename = `xl/media/${medium.name}.${medium.extension}`;\n if (medium.filename) {\n const data = await fsReadFileAsync(medium.filename);\n return zip.append(data, {name: filename});\n }\n if (medium.buffer) {\n return zip.append(medium.buffer, {name: filename});\n }\n if (medium.base64) {\n const dataimg64 = medium.base64;\n const content = dataimg64.substring(dataimg64.indexOf(',') + 1);\n return zip.append(content, {name: filename, base64: true});\n }\n }\n throw new Error('Unsupported media');\n })\n );\n }\n\n addDrawings(zip, model) {\n const drawingXform = new DrawingXform();\n const relsXform = new RelationshipsXform();\n\n model.worksheets.forEach(worksheet => {\n const {drawing} = worksheet;\n if (drawing) {\n drawingXform.prepare(drawing, {});\n let xml = drawingXform.toXml(drawing);\n zip.append(xml, {name: `xl/drawings/${drawing.name}.xml`});\n\n xml = relsXform.toXml(drawing.rels);\n zip.append(xml, {name: `xl/drawings/_rels/${drawing.name}.xml.rels`});\n }\n });\n }\n\n addTables(zip, model) {\n const tableXform = new TableXform();\n\n model.worksheets.forEach(worksheet => {\n const {tables} = worksheet;\n tables.forEach(table => {\n tableXform.prepare(table, {});\n const tableXml = tableXform.toXml(table);\n zip.append(tableXml, {name: `xl/tables/${table.target}`});\n });\n });\n }\n\n addPivotTables(zip, model) {\n if (!model.pivotTables.length) return;\n\n const pivotTable = model.pivotTables[0];\n\n const pivotCacheRecordsXform = new PivotCacheRecordsXform();\n const pivotCacheDefinitionXform = new PivotCacheDefinitionXform();\n const pivotTableXform = new PivotTableXform();\n const relsXform = new RelationshipsXform();\n\n // pivot cache records\n // --------------------------------------------------\n // copy of the source data.\n //\n // Note: cells in the columns of the source data which are part\n // of the \"rows\" or \"columns\" of the pivot table configuration are\n // replaced by references to their __cache field__ identifiers.\n // See \"pivot cache definition\" below.\n\n let xml = pivotCacheRecordsXform.toXml(pivotTable);\n zip.append(xml, {name: 'xl/pivotCache/pivotCacheRecords1.xml'});\n\n // pivot cache definition\n // --------------------------------------------------\n // cache source (source data):\n // ref=\"A1:E7\" on sheet=\"Sheet1\"\n // cache fields:\n // - 0: \"A\" (a1, a2, a3)\n // - 1: \"B\" (b1, b2)\n // - ...\n\n xml = pivotCacheDefinitionXform.toXml(pivotTable);\n zip.append(xml, {name: 'xl/pivotCache/pivotCacheDefinition1.xml'});\n\n xml = relsXform.toXml([\n {\n Id: 'rId1',\n Type: XLSX.RelType.PivotCacheRecords,\n Target: 'pivotCacheRecords1.xml',\n },\n ]);\n zip.append(xml, {name: 'xl/pivotCache/_rels/pivotCacheDefinition1.xml.rels'});\n\n // pivot tables (on destination worksheet)\n // --------------------------------------------------\n // location: ref=\"A3:E15\"\n // pivotFields\n // rowFields and rowItems\n // colFields and colItems\n // dataFields\n // pivotTableStyleInfo\n\n xml = pivotTableXform.toXml(pivotTable);\n zip.append(xml, {name: 'xl/pivotTables/pivotTable1.xml'});\n\n xml = relsXform.toXml([\n {\n Id: 'rId1',\n Type: XLSX.RelType.PivotCacheDefinition,\n Target: '../pivotCache/pivotCacheDefinition1.xml',\n },\n ]);\n zip.append(xml, {name: 'xl/pivotTables/_rels/pivotTable1.xml.rels'});\n }\n\n async addContentTypes(zip, model) {\n const xform = new ContentTypesXform();\n const xml = xform.toXml(model);\n zip.append(xml, {name: '[Content_Types].xml'});\n }\n\n async addApp(zip, model) {\n const xform = new AppXform();\n const xml = xform.toXml(model);\n zip.append(xml, {name: 'docProps/app.xml'});\n }\n\n async addCore(zip, model) {\n const coreXform = new CoreXform();\n zip.append(coreXform.toXml(model), {name: 'docProps/core.xml'});\n }\n\n async addThemes(zip, model) {\n const themes = model.themes || {theme1: theme1Xml};\n Object.keys(themes).forEach(name => {\n const xml = themes[name];\n const path = `xl/theme/${name}.xml`;\n zip.append(xml, {name: path});\n });\n }\n\n async addOfficeRels(zip) {\n const xform = new RelationshipsXform();\n const xml = xform.toXml([\n {Id: 'rId1', Type: XLSX.RelType.OfficeDocument, Target: 'xl/workbook.xml'},\n {Id: 'rId2', Type: XLSX.RelType.CoreProperties, Target: 'docProps/core.xml'},\n {Id: 'rId3', Type: XLSX.RelType.ExtenderProperties, Target: 'docProps/app.xml'},\n ]);\n zip.append(xml, {name: '_rels/.rels'});\n }\n\n async addWorkbookRels(zip, model) {\n let count = 1;\n const relationships = [\n {Id: `rId${count++}`, Type: XLSX.RelType.Styles, Target: 'styles.xml'},\n {Id: `rId${count++}`, Type: XLSX.RelType.Theme, Target: 'theme/theme1.xml'},\n ];\n if (model.sharedStrings.count) {\n relationships.push({\n Id: `rId${count++}`,\n Type: XLSX.RelType.SharedStrings,\n Target: 'sharedStrings.xml',\n });\n }\n if ((model.pivotTables || []).length) {\n const pivotTable = model.pivotTables[0];\n pivotTable.rId = `rId${count++}`;\n relationships.push({\n Id: pivotTable.rId,\n Type: XLSX.RelType.PivotCacheDefinition,\n Target: 'pivotCache/pivotCacheDefinition1.xml',\n });\n }\n model.worksheets.forEach(worksheet => {\n worksheet.rId = `rId${count++}`;\n relationships.push({\n Id: worksheet.rId,\n Type: XLSX.RelType.Worksheet,\n Target: `worksheets/sheet${worksheet.id}.xml`,\n });\n });\n const xform = new RelationshipsXform();\n const xml = xform.toXml(relationships);\n zip.append(xml, {name: 'xl/_rels/workbook.xml.rels'});\n }\n\n async addSharedStrings(zip, model) {\n if (model.sharedStrings && model.sharedStrings.count) {\n zip.append(model.sharedStrings.xml, {name: 'xl/sharedStrings.xml'});\n }\n }\n\n async addStyles(zip, model) {\n const {xml} = model.styles;\n if (xml) {\n zip.append(xml, {name: 'xl/styles.xml'});\n }\n }\n\n async addWorkbook(zip, model) {\n const xform = new WorkbookXform();\n zip.append(xform.toXml(model), {name: 'xl/workbook.xml'});\n }\n\n async addWorksheets(zip, model) {\n // preparation phase\n const worksheetXform = new WorksheetXform();\n const relationshipsXform = new RelationshipsXform();\n const commentsXform = new CommentsXform();\n const vmlNotesXform = new VmlNotesXform();\n\n // write sheets\n model.worksheets.forEach(worksheet => {\n let xmlStream = new XmlStream();\n worksheetXform.render(xmlStream, worksheet);\n zip.append(xmlStream.xml, {name: `xl/worksheets/sheet${worksheet.id}.xml`});\n\n if (worksheet.rels && worksheet.rels.length) {\n xmlStream = new XmlStream();\n relationshipsXform.render(xmlStream, worksheet.rels);\n zip.append(xmlStream.xml, {name: `xl/worksheets/_rels/sheet${worksheet.id}.xml.rels`});\n }\n\n if (worksheet.comments.length > 0) {\n xmlStream = new XmlStream();\n commentsXform.render(xmlStream, worksheet);\n zip.append(xmlStream.xml, {name: `xl/comments${worksheet.id}.xml`});\n\n xmlStream = new XmlStream();\n vmlNotesXform.render(xmlStream, worksheet);\n zip.append(xmlStream.xml, {name: `xl/drawings/vmlDrawing${worksheet.id}.vml`});\n }\n });\n }\n\n _finalize(zip) {\n return new Promise((resolve, reject) => {\n zip.on('finish', () => {\n resolve(this);\n });\n zip.on('error', reject);\n zip.finalize();\n });\n }\n\n prepareModel(model, options) {\n // ensure following properties have sane values\n model.creator = model.creator || 'ExcelJS';\n model.lastModifiedBy = model.lastModifiedBy || 'ExcelJS';\n model.created = model.created || new Date();\n model.modified = model.modified || new Date();\n\n model.useSharedStrings = options.useSharedStrings !== undefined ? options.useSharedStrings : true;\n model.useStyles = options.useStyles !== undefined ? options.useStyles : true;\n\n // Manage the shared strings\n model.sharedStrings = new SharedStringsXform();\n\n // add a style manager to handle cell formats, fonts, etc.\n model.styles = model.useStyles ? new StylesXform(true) : new StylesXform.Mock();\n\n // prepare all of the things before the render\n const workbookXform = new WorkbookXform();\n const worksheetXform = new WorksheetXform();\n\n workbookXform.prepare(model);\n\n const worksheetOptions = {\n sharedStrings: model.sharedStrings,\n styles: model.styles,\n date1904: model.properties.date1904,\n drawingsCount: 0,\n media: model.media,\n };\n worksheetOptions.drawings = model.drawings = [];\n worksheetOptions.commentRefs = model.commentRefs = [];\n let tableCount = 0;\n model.tables = [];\n model.worksheets.forEach(worksheet => {\n // assign unique filenames to tables\n worksheet.tables.forEach(table => {\n tableCount++;\n table.target = `table${tableCount}.xml`;\n table.id = tableCount;\n model.tables.push(table);\n });\n\n worksheetXform.prepare(worksheet, worksheetOptions);\n });\n\n // TODO: workbook drawing list\n }\n\n async write(stream, options) {\n options = options || {};\n const {model} = this.workbook;\n const zip = new ZipStream.ZipWriter(options.zip);\n zip.pipe(stream);\n\n this.prepareModel(model, options);\n\n // render\n await this.addContentTypes(zip, model);\n await this.addOfficeRels(zip, model);\n await this.addWorkbookRels(zip, model);\n await this.addWorksheets(zip, model);\n await this.addSharedStrings(zip, model); // always after worksheets\n await this.addDrawings(zip, model);\n await this.addTables(zip, model);\n await this.addPivotTables(zip, model);\n await Promise.all([this.addThemes(zip, model), this.addStyles(zip, model)]);\n await this.addMedia(zip, model);\n await Promise.all([this.addApp(zip, model), this.addCore(zip, model)]);\n await this.addWorkbook(zip, model);\n return this._finalize(zip);\n }\n\n writeFile(filename, options) {\n const stream = fs.createWriteStream(filename);\n\n return new Promise((resolve, reject) => {\n stream.on('finish', () => {\n resolve();\n });\n stream.on('error', error => {\n reject(error);\n });\n\n this.write(stream, options)\n .then(() => {\n stream.end();\n })\n .catch(err => {\n reject(err);\n });\n });\n }\n\n async writeBuffer(options) {\n const stream = new StreamBuf();\n await this.write(stream, options);\n return stream.read();\n }\n}\n\nXLSX.RelType = require('./rel-type');\n\nmodule.exports = XLSX;\n"],"mappings":"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","ignoreList":[]}
|
package/dist/exceljs.bare.js
CHANGED
|
@@ -2674,6 +2674,29 @@ module.exports = Row;
|
|
|
2674
2674
|
|
|
2675
2675
|
/* eslint-disable max-classes-per-file */
|
|
2676
2676
|
const colCache = require('../utils/col-cache');
|
|
2677
|
+
|
|
2678
|
+
// Excel's rules for table names: start with a letter, '_' or '\\', then letters, digits, '.' or
|
|
2679
|
+
// '_'; at most 255 characters; and the name must not be read as a cell reference.
|
|
2680
|
+
// Any non-ASCII character is treated as a letter so that names Excel accepts keep working.
|
|
2681
|
+
const tableNameRegex = /^[A-Za-z_\\\u0080-\uFFFF][A-Za-z0-9._\u0080-\uFFFF]*$/;
|
|
2682
|
+
function isCellReference(name) {
|
|
2683
|
+
if (/^[RC]$/i.test(name) || /^R\d*C\d*$/i.test(name)) {
|
|
2684
|
+
// 'R', 'C' and R1C1-style references such as 'R1C1' or 'RC'
|
|
2685
|
+
return true;
|
|
2686
|
+
}
|
|
2687
|
+
const match = /^([A-Z]{1,3})(\d+)$/i.exec(name);
|
|
2688
|
+
if (!match) {
|
|
2689
|
+
return false;
|
|
2690
|
+
}
|
|
2691
|
+
// letters past XFD are not a column, so a name like 'ZZZ1' is fine
|
|
2692
|
+
const letters = match[1].toUpperCase();
|
|
2693
|
+
const isColumn = letters.length < 3 || letters <= 'XFD';
|
|
2694
|
+
const row = parseInt(match[2], 10);
|
|
2695
|
+
return isColumn && row >= 1 && row <= 1048576;
|
|
2696
|
+
}
|
|
2697
|
+
function isValidTableName(name) {
|
|
2698
|
+
return typeof name === 'string' && name.length <= 255 && tableNameRegex.test(name) && !isCellReference(name);
|
|
2699
|
+
}
|
|
2677
2700
|
class Column {
|
|
2678
2701
|
// wrapper around column model, allowing access and manipulation
|
|
2679
2702
|
constructor(table, column, index) {
|
|
@@ -2807,6 +2830,8 @@ class Table {
|
|
|
2807
2830
|
throw new Error(message);
|
|
2808
2831
|
}
|
|
2809
2832
|
};
|
|
2833
|
+
assert(table.name, 'Table must have a name');
|
|
2834
|
+
assert(isValidTableName(table.name), `Invalid table name '${table.name}'. A table name must start with a letter, underscore ` + 'or backslash, contain only letters, digits, periods and underscores, ' + 'not look like a cell reference and be at most 255 characters long.');
|
|
2810
2835
|
assert(table.ref, 'Table must have ref');
|
|
2811
2836
|
assert(table.columns, 'Table must have column definitions');
|
|
2812
2837
|
assert(table.rows, 'Table must have row definitions');
|
|
@@ -3560,6 +3585,24 @@ class Worksheet {
|
|
|
3560
3585
|
spliceColumns(start, count, ...inserts) {
|
|
3561
3586
|
const rows = this._rows;
|
|
3562
3587
|
const nRows = rows.length;
|
|
3588
|
+
|
|
3589
|
+
// unmerge any merges that touch the spliced or shifted columns so their cells move
|
|
3590
|
+
// as plain cells; they are re-merged at their new position below
|
|
3591
|
+
const merges = Object.values(this._merges).filter(merge => merge.right >= start);
|
|
3592
|
+
merges.forEach(merge => {
|
|
3593
|
+
for (let i = merge.top; i <= merge.bottom; i++) {
|
|
3594
|
+
for (let j = merge.left; j <= merge.right; j++) {
|
|
3595
|
+
// keep each cell's own style (e.g. borders) while unmerging
|
|
3596
|
+
const cell = this.getCell(i, j);
|
|
3597
|
+
const {
|
|
3598
|
+
style
|
|
3599
|
+
} = cell;
|
|
3600
|
+
cell.unmerge();
|
|
3601
|
+
cell.style = style;
|
|
3602
|
+
}
|
|
3603
|
+
}
|
|
3604
|
+
delete this._merges[colCache.encodeAddress(merge.top, merge.left)];
|
|
3605
|
+
});
|
|
3563
3606
|
if (inserts.length > 0) {
|
|
3564
3607
|
// must iterate over all rows whether they exist yet or not
|
|
3565
3608
|
for (let i = 0; i < nRows; i++) {
|
|
@@ -3598,6 +3641,29 @@ class Worksheet {
|
|
|
3598
3641
|
this.getColumn(i).defn = null;
|
|
3599
3642
|
}
|
|
3600
3643
|
|
|
3644
|
+
// re-merge the merges that were unmerged above, shifted, shrunk or grown to match.
|
|
3645
|
+
// Inserted columns join a merge only when it continues on both sides of them.
|
|
3646
|
+
merges.forEach(merge => {
|
|
3647
|
+
let {
|
|
3648
|
+
left,
|
|
3649
|
+
right
|
|
3650
|
+
} = merge;
|
|
3651
|
+
if (left >= nKeep) {
|
|
3652
|
+
left += nExpand;
|
|
3653
|
+
} else if (left >= start) {
|
|
3654
|
+
left = start + inserts.length;
|
|
3655
|
+
}
|
|
3656
|
+
if (right >= nKeep) {
|
|
3657
|
+
right += nExpand;
|
|
3658
|
+
} else if (right >= start) {
|
|
3659
|
+
right = start - 1;
|
|
3660
|
+
}
|
|
3661
|
+
// drop merges whose columns were all deleted or that are down to a single cell
|
|
3662
|
+
if (left < right || left === right && merge.top < merge.bottom) {
|
|
3663
|
+
this.mergeCellsWithoutStyle(merge.top, left, merge.bottom, right);
|
|
3664
|
+
}
|
|
3665
|
+
});
|
|
3666
|
+
|
|
3601
3667
|
// account for defined names
|
|
3602
3668
|
this.workbook.definedNames.spliceColumns(this.name, start, count, inserts.length);
|
|
3603
3669
|
}
|
|
@@ -13137,10 +13203,9 @@ class WorkSheetXform extends BaseXform {
|
|
|
13137
13203
|
model.media = [];
|
|
13138
13204
|
if (model.drawing) {
|
|
13139
13205
|
const drawingRel = rels[model.drawing.rId];
|
|
13140
|
-
const match = drawingRel.Target.match(/\/drawings\/([a-zA-Z0-9]+)[.][a-zA-Z]{3,4}$/);
|
|
13141
|
-
|
|
13142
|
-
|
|
13143
|
-
const drawing = options.drawings[drawingName];
|
|
13206
|
+
const match = drawingRel && drawingRel.Target.match(/\/drawings\/([a-zA-Z0-9]+)[.][a-zA-Z]{3,4}$/);
|
|
13207
|
+
const drawing = match && options.drawings[match[1]];
|
|
13208
|
+
if (drawing) {
|
|
13144
13209
|
drawing.anchors.forEach(anchor => {
|
|
13145
13210
|
if (anchor.medium) {
|
|
13146
13211
|
const image = {
|
|
@@ -16304,7 +16369,7 @@ class XLSX {
|
|
|
16304
16369
|
Object.keys(model.drawings).forEach(name => {
|
|
16305
16370
|
const drawing = model.drawings[name];
|
|
16306
16371
|
const drawingRel = model.drawingRels[name];
|
|
16307
|
-
if (drawingRel) {
|
|
16372
|
+
if (drawing && drawingRel) {
|
|
16308
16373
|
drawingOptions.rels = drawingRel.reduce((o, rel) => {
|
|
16309
16374
|
o[rel.Id] = rel;
|
|
16310
16375
|
return o;
|