UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

141 lines (140 loc) 5.2 kB
/** * DevExtreme (esm/exporter/excel/excel.file.js) * Version: 21.1.4 * Build date: Mon Jun 21 2021 * * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ import { isDefined } from "../../core/utils/type"; import tagHelper from "./excel.tag_helper"; import cellFormatHelper from "./excel.cell_format_helper"; import fillHelper from "./excel.fill_helper"; import fontHelper from "./excel.font_helper"; import numberFormatHelper from "./excel.number_format_helper"; export default class ExcelFile { constructor() { this._cellFormatTags = []; this._fillTags = []; this._fontTags = []; this._numberFormatTags = []; this._fillTags.push(fillHelper.tryCreateTag({ patternFill: { patternType: "none" } })) } registerCellFormat(cellFormat) { var result; var cellFormatTag = cellFormatHelper.tryCreateTag(cellFormat, { registerFill: this.registerFill.bind(this), registerFont: this.registerFont.bind(this), registerNumberFormat: this.registerNumberFormat.bind(this) }); if (isDefined(cellFormatTag)) { for (var i = 0; i < this._cellFormatTags.length; i++) { if (cellFormatHelper.areEqual(this._cellFormatTags[i], cellFormatTag)) { result = i; break } } if (void 0 === result) { result = this._cellFormatTags.push(cellFormatTag) - 1 } } return result } static copyCellFormat(source) { return cellFormatHelper.copy(source) } generateCellFormatsXml() { var cellFormatTagsAsXmlStringsArray = this._cellFormatTags.map(tag => cellFormatHelper.toXml(tag)); return tagHelper.toXml("cellXfs", { count: cellFormatTagsAsXmlStringsArray.length }, cellFormatTagsAsXmlStringsArray.join("")) } registerFill(fill) { var result; var fillTag = fillHelper.tryCreateTag(fill); if (isDefined(fillTag)) { for (var i = 0; i < this._fillTags.length; i++) { if (fillHelper.areEqual(this._fillTags[i], fillTag)) { result = i; break } } if (void 0 === result) { if (this._fillTags.length < 2) { this._fillTags.push(fillHelper.tryCreateTag({ patternFill: { patternType: "Gray125" } })) } result = this._fillTags.push(fillTag) - 1 } } return result } generateFillsXml() { var tagsAsXmlStringsArray = this._fillTags.map(tag => fillHelper.toXml(tag)); return tagHelper.toXml("fills", { count: tagsAsXmlStringsArray.length }, tagsAsXmlStringsArray.join("")) } registerFont(font) { var result; var fontTag = fontHelper.tryCreateTag(font); if (isDefined(fontTag)) { for (var i = 0; i < this._fontTags.length; i++) { if (fontHelper.areEqual(this._fontTags[i], fontTag)) { result = i; break } } if (void 0 === result) { result = this._fontTags.push(fontTag) - 1 } } return result } generateFontsXml() { var xmlStringsArray = this._fontTags.map(tag => fontHelper.toXml(tag)); return tagHelper.toXml("fonts", { count: xmlStringsArray.length }, xmlStringsArray.join("")) } _convertNumberFormatIndexToId(index) { return 165 + index } registerNumberFormat(numberFormat) { var result; var tag = numberFormatHelper.tryCreateTag(numberFormat); if (isDefined(tag)) { for (var i = 0; i < this._numberFormatTags.length; i++) { if (numberFormatHelper.areEqual(this._numberFormatTags[i], tag)) { result = this._numberFormatTags[i][numberFormatHelper.ID_PROPERTY_NAME]; break } } if (void 0 === result) { tag[numberFormatHelper.ID_PROPERTY_NAME] = this._convertNumberFormatIndexToId(this._numberFormatTags.length); result = tag[numberFormatHelper.ID_PROPERTY_NAME]; this._numberFormatTags.push(tag) } } return result } generateNumberFormatsXml() { if (this._numberFormatTags.length > 0) { var xmlStringsArray = this._numberFormatTags.map(tag => numberFormatHelper.toXml(tag)); return tagHelper.toXml("numFmts", { count: xmlStringsArray.length }, xmlStringsArray.join("")) } else { return "" } } }