UNPKG

mr-excel

Version:

A versatile JavaScript library for effortlessly generating .xlsx files from input objects. Seamlessly create Excel spreadsheets with data, formatting, formulas, and more.

109 lines (108 loc) 3.81 kB
export function contentTypeGenerator( sheetContentType: string, commentId: number[], arrTypes: string[], sheetDrawers: string[], checkboxForm: string[], needCalcChain: boolean, tableRef: string[] ) { let typeCheck: { [key: string]: boolean; } = {}; return ( '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n' + '<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">' + '<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>' + '<Default Extension="vml" ContentType="application/vnd.openxmlformats-officedocument.vmlDrawing" />' + '<Default Extension="xml" ContentType="application/xml" />' + "<Override" + ' ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"' + ' PartName="/xl/workbook.xml" />' + '<Override ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"' + ' PartName="/xl/styles.xml" />' + '<Override ContentType="application/vnd.openxmlformats-officedocument.theme+xml"' + ' PartName="/xl/theme/theme1.xml" />' + arrTypes.reduce((res, curr) => { curr = curr.toLowerCase(); if (typeCheck[curr]) { return res; } if (curr == "svg") { typeCheck["png"] = true; typeCheck["svg"] = true; return ( res + '<Default Extension="png" ContentType="image/png"/>' + '<Default Extension="svg" ContentType="image/svg+xml"/>' ); } else if (curr == "jpeg" || curr == "jpg") { typeCheck["jpeg"] = true; typeCheck["jpg"] = true; return ( res + '<Default Extension="' + curr + '" ContentType="image/jpeg"/>' ); } else { typeCheck[curr] = true; return ( res + '<Default Extension="' + curr + '" ContentType="image/' + curr + '"/>' ); } }, "") + commentId.reduce((res, curr) => { return ( res + '<Override PartName="/xl/comments' + curr + '.xml"' + ' ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml" />' ); }, "") + sheetContentType + (tableRef.length > 0 ? tableRef.reduce((res, cur) => { return ( res + '<Override PartName="/xl/tables/' + cur + '" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml"/>' ); }, "") : "") + "<Override" + ' ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"' + ' PartName="/xl/sharedStrings.xml" />' + (needCalcChain ? '<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" />' + sheetDrawers.reduce((res, cu) => { return ( res + '<Override PartName="/xl/drawings/' + cu + '"' + ' ContentType="application/vnd.openxmlformats-officedocument.drawing+xml" />' ); }, "") + (checkboxForm.length > 0 ? checkboxForm.reduce((res, curr, index) => { return ( res + '<Override PartName="/xl/ctrlProps/ctrlProp' + (index + 1) + '.xml" ContentType="application/vnd.ms-excel.controlproperties+xml"/>' ); }, "") : "") + '<Override PartName="/docProps/app.xml" ' + ' ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml" />' + "</Types>" ); }