@elbstack/xlsx-populate
Version:
Excel XLSX parser/generator written in JavaScript with Node.js and browser support, jQuery/d3-style method chaining, and a focus on keeping existing workbook features and styles in tact.
75 lines (65 loc) • 2.74 kB
JavaScript
"use strict";
const _ = require("lodash");
/**
* A content type collection.
* @ignore
*/
class ContentTypes {
/**
* Creates a new instance of ContentTypes
* @param {{}} node - The node.
*/
constructor(node) {
this._node = node;
}
/**
* Add a new content type.
* @param {string} partName - The part name.
* @param {string} contentType - The content type.
* @returns {{}} The new content type.
*/
add(partName, contentType) {
const node = {
name: "Override",
attributes: {
PartName: partName,
ContentType: contentType
}
};
this._node.children.push(node);
return node;
}
/**
* Find a content type by part name.
* @param {string} partName - The part name.
* @returns {{}|undefined} The matching content type or undefined if not found.
*/
findByPartName(partName) {
return _.find(this._node.children, node => node.attributes.PartName === partName);
}
/**
* Convert the collection to an XML object.
* @returns {{}} The XML.
*/
toXml() {
return this._node;
}
}
module.exports = ContentTypes;
/*
[Content_Types].xml
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
<Default Extension="bin" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings"/>
<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
<Default Extension="xml" ContentType="application/xml"/>
<Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>
<Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>
<Override PartName="/xl/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/>
<Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/>
<Override PartName="/xl/sharedStrings.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"/>
<Override PartName="/xl/calcChain.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml"/>
<Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/>
<Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/>
</Types>
*/