Comparing version 3.5.6 to 3.6.0
663
ejsExcel.js
@@ -139,2 +139,5 @@ function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { return step("next", value); }, function (err) { return step("throw", err); }); } } return step("next"); }); }; } | ||
readFileAsync = Promise_fromStandard(fs.readFile, fs); | ||
const unlinkAsync = Promise_fromStandard(fs.unlink, fs); | ||
const writeFileAsync = Promise_fromStandard(fs.writeFile, fs); | ||
@@ -203,4 +206,8 @@ inflateRawAsync = Promise_fromStandard(zlib.inflateRaw, zlib); | ||
renderExcelCb = function (exlBuf, _data_, callback) { | ||
renderExcel(exlBuf, _data_).then(function (buf2) { | ||
renderExcelCb = function (exlBuf, _data_, opt, callback) { | ||
if(typeof(opt) === "function") { | ||
callback = opt; | ||
opt = undefined; | ||
} | ||
renderExcel(exlBuf, _data_, opt).then(function (buf2) { | ||
callback(null, buf2); | ||
@@ -213,3 +220,3 @@ })["catch"](function (err) { | ||
renderExcel = function () { | ||
var _ref2 = _asyncToGenerator(function* (exlBuf, _data_) { | ||
var _ref2 = _asyncToGenerator(function* (exlBuf, _data_, opt) { | ||
var anonymous, attr, attr0, attr_r, begin, buffer2, cEl, cElArr, cItem, data, doc, documentElement, end, endElement, entry, hyperlink, hyperlinksDomEl, hzip, i, i1, idx, j1, key, keyArr, l, len1, len10, len11, len12, len13, len14, len15, len2, len3, len4, len5, len6, len7, len8, len9, m, m_c_i, mciNum, mciNumArr, mergeCell, mergeCellsDomEl, n, o, p, pageMarginsDomEl, phoneticPr, phoneticPrDomEl, q, r, reXmlEq, ref, ref0, ref1, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9, refArr, row, rowEl, rowElArr, sharedStrings2, sheetBuf, sheetBuf2, sheetDataDomEl, sheetDataElementState, sheetEntrieRels, sheetEntries, sheetObj, shsEntry, shsObj, shsStr, si, si2, sirTp, startElement, str, str2, u, updateEntryAsync, v, w, workbookBuf, workbookEntry, workbookRelsBuf, workbookRelsEntry, x, xjOpTmp, y, z; | ||
@@ -815,323 +822,337 @@ data = { | ||
entry = sheetEntries[i]; | ||
sheetBuf = yield inflateRawAsync(entry.cfile); | ||
doc = new DOMParser().parseFromString(sheetBuf.toString(), 'text/xml'); | ||
documentElement = doc.documentElement; | ||
sheetDataDomEl = documentElement.getElementsByTagName("sheetData")[0]; | ||
if (!sheetDataDomEl) { | ||
continue; | ||
} | ||
mergeCellsDomEl = documentElement.getElementsByTagName("mergeCells")[0]; | ||
if (!mergeCellsDomEl) { | ||
mergeCellsDomEl = doc.createElement("mergeCells"); | ||
hyperlinksDomEl = documentElement.getElementsByTagName("hyperlinks")[0]; | ||
phoneticPrDomEl = documentElement.getElementsByTagName("phoneticPr")[0]; | ||
pageMarginsDomEl = documentElement.getElementsByTagName("pageMargins")[0]; | ||
if (phoneticPrDomEl) { | ||
documentElement.insertBefore(mergeCellsDomEl, phoneticPrDomEl); | ||
} else if (hyperlinksDomEl) { | ||
documentElement.insertBefore(mergeCellsDomEl, hyperlinksDomEl); | ||
} else if (pageMarginsDomEl) { | ||
documentElement.insertBefore(mergeCellsDomEl, pageMarginsDomEl); | ||
} else { | ||
documentElement.insertBefore(mergeCellsDomEl, sheetDataDomEl.nextSibling); | ||
//缓存 | ||
var md5Str2 = crypto.createHash("md5").update(entry.cfile).digest("hex"); | ||
str2 = undefined | ||
if(opt && opt.cachePath) { | ||
try { | ||
str2 = yield readFileAsync(opt.cachePath+"/ejsexcel_"+md5Str2, "utf8"); | ||
} catch(errTmp) { | ||
} | ||
} | ||
rowElArr = sheetDataDomEl.getElementsByTagName("row"); | ||
for (n = 0, len3 = rowElArr.length; n < len3; n++) { | ||
rowEl = rowElArr[n]; | ||
if (rowEl.attributes[0] && rowEl.attributes[0].nodeName === "r") { | ||
continue; | ||
} | ||
attr_r = void 0; | ||
idx = void 0; | ||
ref3 = rowEl.attributes; | ||
for (i = o = 0, len4 = ref3.length; o < len4; i = ++o) { | ||
attr = ref3[i]; | ||
if (attr.nodeName === "r") { | ||
attr_r = attr; | ||
idx = i; | ||
break; | ||
} | ||
} | ||
if (!attr_r) { | ||
continue; | ||
} | ||
attr0 = rowEl.attributes[0]; | ||
rowEl.attributes[0] = attr_r; | ||
rowEl.attributes[idx] = attr0; | ||
if(!str2) { | ||
sheetBuf = yield inflateRawAsync(entry.cfile); | ||
doc = new DOMParser().parseFromString(sheetBuf.toString(), 'text/xml'); | ||
documentElement = doc.documentElement; | ||
sheetDataDomEl = documentElement.getElementsByTagName("sheetData")[0]; | ||
if (!sheetDataDomEl) { | ||
continue; | ||
} | ||
mergeCellsDomEl = documentElement.getElementsByTagName("mergeCells")[0]; | ||
if (!mergeCellsDomEl) { | ||
mergeCellsDomEl = doc.createElement("mergeCells"); | ||
hyperlinksDomEl = documentElement.getElementsByTagName("hyperlinks")[0]; | ||
phoneticPrDomEl = documentElement.getElementsByTagName("phoneticPr")[0]; | ||
pageMarginsDomEl = documentElement.getElementsByTagName("pageMargins")[0]; | ||
if (phoneticPrDomEl) { | ||
documentElement.insertBefore(mergeCellsDomEl, phoneticPrDomEl); | ||
} else if (hyperlinksDomEl) { | ||
documentElement.insertBefore(mergeCellsDomEl, hyperlinksDomEl); | ||
} else if (pageMarginsDomEl) { | ||
documentElement.insertBefore(mergeCellsDomEl, pageMarginsDomEl); | ||
} else { | ||
documentElement.insertBefore(mergeCellsDomEl, sheetDataDomEl.nextSibling); | ||
} | ||
} | ||
rowElArr = sheetDataDomEl.getElementsByTagName("row"); | ||
for (n = 0, len3 = rowElArr.length; n < len3; n++) { | ||
rowEl = rowElArr[n]; | ||
if (rowEl.attributes[0] && rowEl.attributes[0].nodeName === "r") { | ||
continue; | ||
} | ||
attr_r = void 0; | ||
idx = void 0; | ||
ref3 = rowEl.attributes; | ||
for (i = o = 0, len4 = ref3.length; o < len4; i = ++o) { | ||
attr = ref3[i]; | ||
if (attr.nodeName === "r") { | ||
attr_r = attr; | ||
idx = i; | ||
break; | ||
} | ||
} | ||
if (!attr_r) { | ||
continue; | ||
} | ||
attr0 = rowEl.attributes[0]; | ||
rowEl.attributes[0] = attr_r; | ||
rowEl.attributes[idx] = attr0; | ||
} | ||
cElArr = sheetDataDomEl.getElementsByTagName("c"); | ||
for (p = 0, len5 = cElArr.length; p < len5; p++) { | ||
cEl = cElArr[p]; | ||
if (cEl.attributes[0] && cEl.attributes[0].nodeName === "r") { | ||
continue; | ||
} | ||
attr_r = void 0; | ||
idx = void 0; | ||
ref4 = cEl.attributes; | ||
for (i = q = 0, len6 = ref4.length; q < len6; i = ++q) { | ||
attr = ref4[i]; | ||
if (attr.nodeName === "r") { | ||
attr_r = attr; | ||
idx = i; | ||
break; | ||
} | ||
} | ||
if (!attr_r) { | ||
continue; | ||
} | ||
attr0 = cEl.attributes[0]; | ||
cEl.attributes[0] = attr_r; | ||
cEl.attributes[idx] = attr0; | ||
} | ||
sheetBuf = Buffer.from(doc.toString()); | ||
xjOpTmp = { | ||
object: true, | ||
reversible: true, | ||
coerce: false, | ||
trim: false, | ||
sanitize: true | ||
}; | ||
sheetDataElementState = ""; | ||
startElement = xml2json.toJson.startElement; | ||
endElement = xml2json.toJson.endElement; | ||
xjOpTmp.startElement = function (elementName, attrs) { | ||
if (elementName === "sheetData") { | ||
sheetDataElementState = "start"; | ||
} | ||
startElement.apply(this, arguments); | ||
}; | ||
xjOpTmp.endElement = function (elementName) { | ||
if (elementName === "sheetData") { | ||
sheetDataElementState = "end"; | ||
} | ||
endElement.apply(this, arguments); | ||
}; | ||
xjOpTmp.sanitizeFn = function (value) { | ||
if (!isString(value)) { | ||
return value; | ||
} | ||
if (sheetDataElementState === "start") { | ||
return value; | ||
} | ||
value = value.replace(/[&<>"']/gm, function (g1, g2) { | ||
if (g1 === "&") { | ||
return "&"; | ||
} else if (g1 === "<") { | ||
return "<"; | ||
} else if (g1 === ">") { | ||
return ">"; | ||
} else if (g1 === "\"") { | ||
return """; | ||
} else if (g1 === "'") { | ||
return "'"; | ||
} | ||
return g1; | ||
}); | ||
return value; | ||
}; | ||
sheetObj = xml2json.toJson(sheetBuf, xjOpTmp); | ||
if (sheetObj.worksheet.sheetData.row === void 0) { | ||
continue; | ||
} else if (!isArray(sheetObj.worksheet.sheetData.row)) { | ||
sheetObj.worksheet.sheetData.row = [sheetObj.worksheet.sheetData.row]; | ||
} | ||
if (sheetObj.worksheet.mergeCells !== void 0 && sheetObj.worksheet.mergeCells.mergeCell !== void 0) { | ||
if (!sheetObj.worksheet.mergeCells.mergeCell) { | ||
sheetObj.worksheet.mergeCells.mergeCell = []; | ||
} else if (!isArray(sheetObj.worksheet.mergeCells.mergeCell)) { | ||
sheetObj.worksheet.mergeCells.mergeCell = [sheetObj.worksheet.mergeCells.mergeCell]; | ||
} | ||
} | ||
ref5 = sheetObj.worksheet.sheetData.row; | ||
for (r = 0, len7 = ref5.length; r < len7; r++) { | ||
row = ref5[r]; | ||
if (row.c !== void 0) { | ||
if (!row.c) { | ||
row.c = []; | ||
} else if (!isArray(row.c)) { | ||
row.c = [row.c]; | ||
} | ||
ref6 = row.c; | ||
for (u = 0, len8 = ref6.length; u < len8; u++) { | ||
cItem = ref6[u]; | ||
if (cItem.t === "s" && cItem.v && !isNaN(Number(cItem.v["$t"])) && !cItem.f) { | ||
if (!shsObj.sst.si) { | ||
shsObj.sst.si = []; | ||
} else if (!isArray(shsObj.sst.si)) { | ||
shsObj.sst.si = [shsObj.sst.si]; | ||
} | ||
si = shsObj.sst.si[cItem.v["$t"]]; | ||
phoneticPr = si.phoneticPr; | ||
si2 = { | ||
t: { | ||
"$t": "" | ||
} | ||
}; | ||
if (si.r !== void 0) { | ||
if (!si.r) { | ||
si.r = []; | ||
} else if (!isArray(si.r)) { | ||
si.r = [si.r]; | ||
} | ||
ref7 = si.r; | ||
for (v = 0, len9 = ref7.length; v < len9; v++) { | ||
sirTp = ref7[v]; | ||
if (sirTp.t && sirTp.t["$t"]) { | ||
si2.t["$t"] += sirTp.t["$t"]; | ||
} | ||
} | ||
} else { | ||
si2.t["$t"] = si.t["$t"]; | ||
} | ||
cItem.v["$t"] = si2.t["$t"]; | ||
if (cItem.v) { | ||
if (!(cItem.v["$t"] === void 0 || cItem.v["$t"] === "")) { | ||
begin = cItem.v["$t"].indexOf("<%"); | ||
end = cItem.v["$t"].indexOf("%>"); | ||
if (begin === -1 || end === -1) { | ||
cItem.v["$t"] = "<%='" + cItem.v["$t"].replace(/'/gm, "\\'") + "'%>"; | ||
} | ||
} | ||
} | ||
} else { | ||
if (cItem.f && cItem["v"] && cItem["v"]["$t"] && cItem["v"]["$t"].indexOf("<%") !== -1 && cItem["v"]["$t"].indexOf("%>") !== -1) { | ||
delete cItem.f; | ||
cItem.t = "s"; | ||
} else { | ||
if (cItem.f) { | ||
if (cItem.f["$t"] !== void 0) { | ||
cItem.f["$t"] = str2Xml(cItem.f["$t"]); | ||
} | ||
delete cItem["v"]; | ||
} else { | ||
if (cItem.v && cItem.v["$t"]) { | ||
cItem.v["$t"] = str2Xml(cItem.v["$t"]); | ||
} | ||
} | ||
} | ||
} | ||
if (sheetObj.worksheet.mergeCells !== void 0 && sheetObj.worksheet.mergeCells.mergeCell !== void 0) { | ||
mciNumArr = []; | ||
ref8 = sheetObj.worksheet.mergeCells.mergeCell; | ||
for (m_c_i = w = 0, len10 = ref8.length; w < len10; m_c_i = ++w) { | ||
mergeCell = ref8[m_c_i]; | ||
if (mergeCell.ref !== void 0) { | ||
refArr = mergeCell.ref.split(":"); | ||
ref0 = refArr[0]; | ||
ref1 = refArr[1]; | ||
if (!ref1 || !ref0) { | ||
continue; | ||
} | ||
if (charToNum(cItem.r.replace(/\d+/, "")) >= charToNum(ref0.replace(/\d+/, "")) && Number(cItem.r.replace(/\D+/, "")) >= Number(ref0.replace(/\D+/, ""))) { | ||
if (cItem.v !== void 0) { | ||
if (!cItem.v["$t"]) { | ||
cItem.v["$t"] = ""; | ||
} | ||
cItem.v["$t"] += "<% _mergeCellArr_.push(_charPlus_('" + ref0.replace(/\d+/, '') + "',_c)+(" + Number(ref0.replace(/\D+/, "")) + "+_r)+':'+_charPlus_('" + ref1.replace(/\d+/, '') + "',_c)+(" + Number(ref1.replace(/\D+/, "")) + "+_r)) %>"; | ||
} else { | ||
if (!cItem["$t"]) { | ||
cItem["$t"] = ""; | ||
} | ||
cItem["$t"] += "<% _mergeCellArr_.push(_charPlus_('" + ref0.replace(/\d+/, '') + "',_c)+(" + Number(ref0.replace(/\D+/, "")) + "+_r)+':'+_charPlus_('" + ref1.replace(/\d+/, '') + "',_c)+(" + Number(ref1.replace(/\D+/, "")) + "+_r)) %>"; | ||
} | ||
mciNumArr.push(m_c_i); | ||
} | ||
} | ||
} | ||
for (x = 0, len11 = mciNumArr.length; x < len11; x++) { | ||
mciNum = mciNumArr[x]; | ||
sheetObj.worksheet.mergeCells.mergeCell.splice(mciNum, 1); | ||
} | ||
} | ||
if (sheetObj.worksheet.hyperlinks && sheetObj.worksheet.hyperlinks.hyperlink) { | ||
mciNumArr = []; | ||
if (!isArray(sheetObj.worksheet.hyperlinks.hyperlink)) { | ||
sheetObj.worksheet.hyperlinks.hyperlink = [sheetObj.worksheet.hyperlinks.hyperlink]; | ||
} | ||
ref9 = sheetObj.worksheet.hyperlinks.hyperlink; | ||
for (m_c_i = y = 0, len12 = ref9.length; y < len12; m_c_i = ++y) { | ||
hyperlink = ref9[m_c_i]; | ||
if (!hyperlink.ref) { | ||
continue; | ||
} | ||
ref = hyperlink.ref; | ||
if (charToNum(cItem.r.replace(/\d+/, "")) >= charToNum(ref.replace(/\d+/, "")) && Number(cItem.r.replace(/\D+/, "")) >= Number(ref.replace(/\D+/, ""))) { | ||
if (cItem.v != null) { | ||
if (!cItem.v["$t"]) { | ||
cItem.v["$t"] = ""; | ||
} | ||
cItem.v["$t"] += "<% _hyperlinkArr_.push({ref:_charPlus_('" + ref.replace(/\d+/, '') + "',_c)+(" + Number(ref.replace(/\D+/, "")) + "+_r)"; | ||
keyArr = Object.keys(hyperlink); | ||
for (z = 0, len13 = keyArr.length; z < len13; z++) { | ||
key = keyArr[z]; | ||
if (key === "ref" || key === "display") { | ||
continue; | ||
} | ||
cItem.v["$t"] += ",'" + key + "':'" + hyperlink[key].replace(/'/gm, "\\'").replace(/\n/gm, "\\n") + "'"; | ||
} | ||
cItem.v["$t"] += "})%>"; | ||
} else { | ||
if (!cItem["$t"]) { | ||
cItem["$t"] = ""; | ||
} | ||
cItem["$t"] += "<% _hyperlinkArr_.push({ref:_charPlus_('" + ref.replace(/\d+/, '') + "',_c)+(" + Number(ref.replace(/\D+/, "")) + "+_r)"; | ||
keyArr = Object.keys(hyperlink); | ||
for (i1 = 0, len14 = keyArr.length; i1 < len14; i1++) { | ||
key = keyArr[i1]; | ||
if (key === "ref" || key === "display") { | ||
continue; | ||
} | ||
cItem["$t"] += ",'" + key + "':'" + hyperlink[key].replace(/'/gm, "\\'").replace(/\n/gm, "\\n") + "'"; | ||
} | ||
cItem["$t"] += "})%>"; | ||
} | ||
mciNumArr.push(m_c_i); | ||
} | ||
} | ||
for (j1 = 0, len15 = mciNumArr.length; j1 < len15; j1++) { | ||
mciNum = mciNumArr[j1]; | ||
sheetObj.worksheet.hyperlinks.hyperlink.splice(mciNum, 1); | ||
} | ||
} | ||
} | ||
} | ||
} | ||
if (sheetObj.worksheet.mergeCells) { | ||
sheetObj.worksheet.mergeCells = { | ||
"$t": "<% for(var m_cl=0; m_cl<_mergeCellArr_.length; m_cl++) { %><%-'<mergeCell ref=\"'+_mergeCellArr_[m_cl]+'\"/>'%><% } %>" | ||
}; | ||
} | ||
if (sheetObj.worksheet.hyperlinks) { | ||
str = "<%for(var m_cl=0; m_cl<_hyperlinkArr_.length; m_cl++) { %><%-'<hyperlink ref=\"'+_hyperlinkArr_[m_cl].ref+'\"'%>"; | ||
str += '<%var eny=_hyperlinkArr_[m_cl];var keyArr=Object.keys(eny);for(var tmp=0;tmp<keyArr.length;tmp++){var key=keyArr[tmp];if(key==="ref")continue;%><%-" "+key+"=\\""+eny[key]+"\\""%><%}%>'; | ||
str += " /><%}%>"; | ||
sheetObj.worksheet.hyperlinks = { | ||
"$t": str | ||
}; | ||
} | ||
sheetBuf2 = Buffer.from(sheetSufStr.toString() + xml2json.toXml(sheetObj, "", { | ||
reSanitize: false | ||
})); | ||
reXmlEq = { | ||
reXmlEq: function (pixEq, jsStr, str) { | ||
if (pixEq === "=") { | ||
jsStr = jsStr.replace(/\n/gm, "\\n").replace(/\r/gm, "\\r").replace(/\t/gm, "\\t"); | ||
jsStr = "_ps_(" + jsStr + ",buf)"; | ||
} else if (pixEq === "~") { | ||
jsStr = jsStr.replace(/\n/gm, "\\n").replace(/\r/gm, "\\r").replace(/\t/gm, "\\t"); | ||
jsStr = "_pi_(" + jsStr + ",buf)"; | ||
} else if (pixEq === "#") { | ||
jsStr = jsStr.replace(/\n/gm, "\\n").replace(/\r/gm, "\\r").replace(/\t/gm, "\\t"); | ||
jsStr = "_pf_(" + jsStr + ",buf)"; | ||
} | ||
return { | ||
jsStr: jsStr, | ||
str: str | ||
}; | ||
} | ||
}; | ||
reXmlEq.fileName = entry.fileName; | ||
str2 = ejs4xlx.parse(sheetBuf2, reXmlEq); | ||
str2 = "(wrap(function* anonymous(_args) {" + str2 + "}))"; | ||
if(opt && opt.cachePath) { | ||
yield writeFileAsync(opt.cachePath+"/ejsexcel_"+md5Str2, str2); | ||
} | ||
} | ||
cElArr = sheetDataDomEl.getElementsByTagName("c"); | ||
for (p = 0, len5 = cElArr.length; p < len5; p++) { | ||
cEl = cElArr[p]; | ||
if (cEl.attributes[0] && cEl.attributes[0].nodeName === "r") { | ||
continue; | ||
} | ||
attr_r = void 0; | ||
idx = void 0; | ||
ref4 = cEl.attributes; | ||
for (i = q = 0, len6 = ref4.length; q < len6; i = ++q) { | ||
attr = ref4[i]; | ||
if (attr.nodeName === "r") { | ||
attr_r = attr; | ||
idx = i; | ||
break; | ||
} | ||
} | ||
if (!attr_r) { | ||
continue; | ||
} | ||
attr0 = cEl.attributes[0]; | ||
cEl.attributes[0] = attr_r; | ||
cEl.attributes[idx] = attr0; | ||
} | ||
sheetBuf = Buffer.from(doc.toString()); | ||
xjOpTmp = { | ||
object: true, | ||
reversible: true, | ||
coerce: false, | ||
trim: false, | ||
sanitize: true | ||
}; | ||
sheetDataElementState = ""; | ||
startElement = xml2json.toJson.startElement; | ||
endElement = xml2json.toJson.endElement; | ||
xjOpTmp.startElement = function (elementName, attrs) { | ||
if (elementName === "sheetData") { | ||
sheetDataElementState = "start"; | ||
} | ||
startElement.apply(this, arguments); | ||
}; | ||
xjOpTmp.endElement = function (elementName) { | ||
if (elementName === "sheetData") { | ||
sheetDataElementState = "end"; | ||
} | ||
endElement.apply(this, arguments); | ||
}; | ||
xjOpTmp.sanitizeFn = function (value) { | ||
if (!isString(value)) { | ||
return value; | ||
} | ||
if (sheetDataElementState === "start") { | ||
return value; | ||
} | ||
value = value.replace(/[&<>"']/gm, function (g1, g2) { | ||
if (g1 === "&") { | ||
return "&"; | ||
} else if (g1 === "<") { | ||
return "<"; | ||
} else if (g1 === ">") { | ||
return ">"; | ||
} else if (g1 === "\"") { | ||
return """; | ||
} else if (g1 === "'") { | ||
return "'"; | ||
} | ||
return g1; | ||
}); | ||
return value; | ||
}; | ||
sheetObj = xml2json.toJson(sheetBuf, xjOpTmp); | ||
if (sheetObj.worksheet.sheetData.row === void 0) { | ||
continue; | ||
} else if (!isArray(sheetObj.worksheet.sheetData.row)) { | ||
sheetObj.worksheet.sheetData.row = [sheetObj.worksheet.sheetData.row]; | ||
} | ||
if (sheetObj.worksheet.mergeCells !== void 0 && sheetObj.worksheet.mergeCells.mergeCell !== void 0) { | ||
if (!sheetObj.worksheet.mergeCells.mergeCell) { | ||
sheetObj.worksheet.mergeCells.mergeCell = []; | ||
} else if (!isArray(sheetObj.worksheet.mergeCells.mergeCell)) { | ||
sheetObj.worksheet.mergeCells.mergeCell = [sheetObj.worksheet.mergeCells.mergeCell]; | ||
} | ||
} | ||
ref5 = sheetObj.worksheet.sheetData.row; | ||
for (r = 0, len7 = ref5.length; r < len7; r++) { | ||
row = ref5[r]; | ||
if (row.c !== void 0) { | ||
if (!row.c) { | ||
row.c = []; | ||
} else if (!isArray(row.c)) { | ||
row.c = [row.c]; | ||
} | ||
ref6 = row.c; | ||
for (u = 0, len8 = ref6.length; u < len8; u++) { | ||
cItem = ref6[u]; | ||
if (cItem.t === "s" && cItem.v && !isNaN(Number(cItem.v["$t"])) && !cItem.f) { | ||
if (!shsObj.sst.si) { | ||
shsObj.sst.si = []; | ||
} else if (!isArray(shsObj.sst.si)) { | ||
shsObj.sst.si = [shsObj.sst.si]; | ||
} | ||
si = shsObj.sst.si[cItem.v["$t"]]; | ||
phoneticPr = si.phoneticPr; | ||
si2 = { | ||
t: { | ||
"$t": "" | ||
} | ||
}; | ||
if (si.r !== void 0) { | ||
if (!si.r) { | ||
si.r = []; | ||
} else if (!isArray(si.r)) { | ||
si.r = [si.r]; | ||
} | ||
ref7 = si.r; | ||
for (v = 0, len9 = ref7.length; v < len9; v++) { | ||
sirTp = ref7[v]; | ||
if (sirTp.t && sirTp.t["$t"]) { | ||
si2.t["$t"] += sirTp.t["$t"]; | ||
} | ||
} | ||
} else { | ||
si2.t["$t"] = si.t["$t"]; | ||
} | ||
cItem.v["$t"] = si2.t["$t"]; | ||
if (cItem.v) { | ||
if (!(cItem.v["$t"] === void 0 || cItem.v["$t"] === "")) { | ||
begin = cItem.v["$t"].indexOf("<%"); | ||
end = cItem.v["$t"].indexOf("%>"); | ||
if (begin === -1 || end === -1) { | ||
cItem.v["$t"] = "<%='" + cItem.v["$t"].replace(/'/gm, "\\'") + "'%>"; | ||
} | ||
} | ||
} | ||
} else { | ||
if (cItem.f && cItem["v"] && cItem["v"]["$t"] && cItem["v"]["$t"].indexOf("<%") !== -1 && cItem["v"]["$t"].indexOf("%>") !== -1) { | ||
delete cItem.f; | ||
cItem.t = "s"; | ||
} else { | ||
if (cItem.f) { | ||
if (cItem.f["$t"] !== void 0) { | ||
cItem.f["$t"] = str2Xml(cItem.f["$t"]); | ||
} | ||
delete cItem["v"]; | ||
} else { | ||
if (cItem.v && cItem.v["$t"]) { | ||
cItem.v["$t"] = str2Xml(cItem.v["$t"]); | ||
} | ||
} | ||
} | ||
} | ||
if (sheetObj.worksheet.mergeCells !== void 0 && sheetObj.worksheet.mergeCells.mergeCell !== void 0) { | ||
mciNumArr = []; | ||
ref8 = sheetObj.worksheet.mergeCells.mergeCell; | ||
for (m_c_i = w = 0, len10 = ref8.length; w < len10; m_c_i = ++w) { | ||
mergeCell = ref8[m_c_i]; | ||
if (mergeCell.ref !== void 0) { | ||
refArr = mergeCell.ref.split(":"); | ||
ref0 = refArr[0]; | ||
ref1 = refArr[1]; | ||
if (!ref1 || !ref0) { | ||
continue; | ||
} | ||
if (charToNum(cItem.r.replace(/\d+/, "")) >= charToNum(ref0.replace(/\d+/, "")) && Number(cItem.r.replace(/\D+/, "")) >= Number(ref0.replace(/\D+/, ""))) { | ||
if (cItem.v !== void 0) { | ||
if (!cItem.v["$t"]) { | ||
cItem.v["$t"] = ""; | ||
} | ||
cItem.v["$t"] += "<% _mergeCellArr_.push(_charPlus_('" + ref0.replace(/\d+/, '') + "',_c)+(" + Number(ref0.replace(/\D+/, "")) + "+_r)+':'+_charPlus_('" + ref1.replace(/\d+/, '') + "',_c)+(" + Number(ref1.replace(/\D+/, "")) + "+_r)) %>"; | ||
} else { | ||
if (!cItem["$t"]) { | ||
cItem["$t"] = ""; | ||
} | ||
cItem["$t"] += "<% _mergeCellArr_.push(_charPlus_('" + ref0.replace(/\d+/, '') + "',_c)+(" + Number(ref0.replace(/\D+/, "")) + "+_r)+':'+_charPlus_('" + ref1.replace(/\d+/, '') + "',_c)+(" + Number(ref1.replace(/\D+/, "")) + "+_r)) %>"; | ||
} | ||
mciNumArr.push(m_c_i); | ||
} | ||
} | ||
} | ||
for (x = 0, len11 = mciNumArr.length; x < len11; x++) { | ||
mciNum = mciNumArr[x]; | ||
sheetObj.worksheet.mergeCells.mergeCell.splice(mciNum, 1); | ||
} | ||
} | ||
if (sheetObj.worksheet.hyperlinks && sheetObj.worksheet.hyperlinks.hyperlink) { | ||
mciNumArr = []; | ||
if (!isArray(sheetObj.worksheet.hyperlinks.hyperlink)) { | ||
sheetObj.worksheet.hyperlinks.hyperlink = [sheetObj.worksheet.hyperlinks.hyperlink]; | ||
} | ||
ref9 = sheetObj.worksheet.hyperlinks.hyperlink; | ||
for (m_c_i = y = 0, len12 = ref9.length; y < len12; m_c_i = ++y) { | ||
hyperlink = ref9[m_c_i]; | ||
if (!hyperlink.ref) { | ||
continue; | ||
} | ||
ref = hyperlink.ref; | ||
if (charToNum(cItem.r.replace(/\d+/, "")) >= charToNum(ref.replace(/\d+/, "")) && Number(cItem.r.replace(/\D+/, "")) >= Number(ref.replace(/\D+/, ""))) { | ||
if (cItem.v != null) { | ||
if (!cItem.v["$t"]) { | ||
cItem.v["$t"] = ""; | ||
} | ||
cItem.v["$t"] += "<% _hyperlinkArr_.push({ref:_charPlus_('" + ref.replace(/\d+/, '') + "',_c)+(" + Number(ref.replace(/\D+/, "")) + "+_r)"; | ||
keyArr = Object.keys(hyperlink); | ||
for (z = 0, len13 = keyArr.length; z < len13; z++) { | ||
key = keyArr[z]; | ||
if (key === "ref" || key === "display") { | ||
continue; | ||
} | ||
cItem.v["$t"] += ",'" + key + "':'" + hyperlink[key].replace(/'/gm, "\\'").replace(/\n/gm, "\\n") + "'"; | ||
} | ||
cItem.v["$t"] += "})%>"; | ||
} else { | ||
if (!cItem["$t"]) { | ||
cItem["$t"] = ""; | ||
} | ||
cItem["$t"] += "<% _hyperlinkArr_.push({ref:_charPlus_('" + ref.replace(/\d+/, '') + "',_c)+(" + Number(ref.replace(/\D+/, "")) + "+_r)"; | ||
keyArr = Object.keys(hyperlink); | ||
for (i1 = 0, len14 = keyArr.length; i1 < len14; i1++) { | ||
key = keyArr[i1]; | ||
if (key === "ref" || key === "display") { | ||
continue; | ||
} | ||
cItem["$t"] += ",'" + key + "':'" + hyperlink[key].replace(/'/gm, "\\'").replace(/\n/gm, "\\n") + "'"; | ||
} | ||
cItem["$t"] += "})%>"; | ||
} | ||
mciNumArr.push(m_c_i); | ||
} | ||
} | ||
for (j1 = 0, len15 = mciNumArr.length; j1 < len15; j1++) { | ||
mciNum = mciNumArr[j1]; | ||
sheetObj.worksheet.hyperlinks.hyperlink.splice(mciNum, 1); | ||
} | ||
} | ||
} | ||
} | ||
} | ||
if (sheetObj.worksheet.mergeCells) { | ||
sheetObj.worksheet.mergeCells = { | ||
"$t": "<% for(var m_cl=0; m_cl<_mergeCellArr_.length; m_cl++) { %><%-'<mergeCell ref=\"'+_mergeCellArr_[m_cl]+'\"/>'%><% } %>" | ||
}; | ||
} | ||
if (sheetObj.worksheet.hyperlinks) { | ||
str = "<%for(var m_cl=0; m_cl<_hyperlinkArr_.length; m_cl++) { %><%-'<hyperlink ref=\"'+_hyperlinkArr_[m_cl].ref+'\"'%>"; | ||
str += '<%var eny=_hyperlinkArr_[m_cl];var keyArr=Object.keys(eny);for(var tmp=0;tmp<keyArr.length;tmp++){var key=keyArr[tmp];if(key==="ref")continue;%><%-" "+key+"=\\""+eny[key]+"\\""%><%}%>'; | ||
str += " /><%}%>"; | ||
sheetObj.worksheet.hyperlinks = { | ||
"$t": str | ||
}; | ||
} | ||
sheetBuf2 = Buffer.from(sheetSufStr.toString() + xml2json.toXml(sheetObj, "", { | ||
reSanitize: false | ||
})); | ||
reXmlEq = { | ||
reXmlEq: function (pixEq, jsStr, str) { | ||
if (pixEq === "=") { | ||
jsStr = jsStr.replace(/\n/gm, "\\n").replace(/\r/gm, "\\r").replace(/\t/gm, "\\t"); | ||
jsStr = "_ps_(" + jsStr + ",buf)"; | ||
} else if (pixEq === "~") { | ||
jsStr = jsStr.replace(/\n/gm, "\\n").replace(/\r/gm, "\\r").replace(/\t/gm, "\\t"); | ||
jsStr = "_pi_(" + jsStr + ",buf)"; | ||
} else if (pixEq === "#") { | ||
jsStr = jsStr.replace(/\n/gm, "\\n").replace(/\r/gm, "\\r").replace(/\t/gm, "\\t"); | ||
jsStr = "_pf_(" + jsStr + ",buf)"; | ||
} | ||
return { | ||
jsStr: jsStr, | ||
str: str | ||
}; | ||
} | ||
}; | ||
reXmlEq.fileName = entry.fileName; | ||
str2 = ejs4xlx.parse(sheetBuf2, reXmlEq); | ||
str2 = "(wrap(function* anonymous(_args) {" + str2 + "}))"; | ||
anonymous = eval(str2); | ||
@@ -1138,0 +1159,0 @@ buffer2 = yield anonymous.call(this, data); |
@@ -15,1 +15,17 @@ /** | ||
export declare function renderExcelCb(exlBuf: Buffer, _data_: any, cb: Function): void; | ||
/** | ||
* 渲染excel模板 | ||
* @param exlBuf 模板excel的Buff | ||
* @param _data_ 数据 | ||
* @param opt 选项, cachePath 编译缓存路径 | ||
*/ | ||
export declare function renderExcel(exlBuf: Buffer, _data_: any, opt: { cachePath?: string }): Promise<Buffer>; | ||
/** | ||
* 渲染excel模板 | ||
* @param exlBuf 模板excel的Buff | ||
* @param _data_ 数据 | ||
* @param cb 渲染成功后回调 | ||
*/ | ||
export declare function renderExcelCb(exlBuf: Buffer, _data_: any, opt: { cachePath?: string }, cb: Function): void; |
@@ -5,3 +5,3 @@ { | ||
"name": "ejsexcel", | ||
"version": "3.5.6", | ||
"version": "3.6.0", | ||
"main": "ejsExcel.js", | ||
@@ -8,0 +8,0 @@ "readme": "README.md", |
@@ -88,1 +88,3 @@ ejsExcel | ||
- @Aptenodytes forsteri ¥15 | ||
- @HHB ¥30 | ||
- @Original ¥88.88 |
@@ -13,5 +13,6 @@ const ejsexcel = require("../ejsExcel"); | ||
//用数据源(对象)data渲染Excel模板 | ||
const exlBuf2 = await ejsexcel.renderExcel(exlBuf, data); | ||
//cachePath为编译缓存路径, 绝对路径, 若不设置, 则无缓存 | ||
const exlBuf2 = await ejsexcel.renderExcel(exlBuf, data, { cachePath: __dirname+"/cache/" }); | ||
await writeFileAsync("./test2.xlsx", exlBuf2); | ||
console.log("生成test2.xlsx"); | ||
})(); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
321252
48
8140
90