UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

97 lines (96 loc) 5.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.exportXLSXFromCross = exports.exportXLSX = void 0; var tslib_1 = require("tslib"); var xlsx_1 = (0, tslib_1.__importDefault)(require("xlsx")); var helper_1 = require("./helper"); var exportXLSX = function (columns, data, fileName) { // 创建工作簿和工作表 var workbook = xlsx_1.default.utils.book_new(); var worksheet = xlsx_1.default.utils.aoa_to_sheet((0, tslib_1.__spreadArray)([columns], data, true)); // 将工作表添加到工作簿 xlsx_1.default.utils.book_append_sheet(workbook, worksheet, 'Sheet1'); xlsx_1.default.writeFile(workbook, fileName); }; exports.exportXLSX = exportXLSX; var exportXLSXFromCross = function (tableHeadRows, columns, datas, fileName, keepFormat) { if (keepFormat === void 0) { keepFormat = true; } var headCellObjs = calcHeadCellObjs(tableHeadRows); var bodyCellObjs = calcBodyCellObjs(datas, columns, keepFormat); var workbook = xlsx_1.default.utils.book_new(); var worksheet = xlsx_1.default.utils.aoa_to_sheet([]); for (var _i = 0, headCellObjs_1 = headCellObjs; _i < headCellObjs_1.length; _i++) { var cellObj = headCellObjs_1[_i]; xlsx_1.default.utils.sheet_add_aoa(worksheet, [[cellObj]], { origin: cellObj.s }); } xlsx_1.default.utils.sheet_add_aoa(worksheet, bodyCellObjs, { origin: { r: tableHeadRows.length, c: 0 } }); worksheet['!merges'] = headCellObjs; worksheet['!cols'] = columns.map(function (column) { return ({ width: typeof column.label == 'string' ? (0, helper_1.getValueBitLength)(column.label) * 1.5 : 20 }); }); xlsx_1.default.utils.book_append_sheet(workbook, worksheet, 'Sheet1'); xlsx_1.default.writeFile(workbook, fileName); }; exports.exportXLSXFromCross = exportXLSXFromCross; var calcHeadCellObjs = function (tableHeadRows) { var fn = function (startRow, startCol, cell, array) { var rowspan = cell.rowspan, colspan = cell.colspan; var label = cell.rowspan == tableHeadRows.length - startRow ? cell.column.label : cell.label; if (rowspan > 1 && colspan > 1) { array.push({ s: { r: startRow, c: startCol }, e: { r: startRow + rowspan - 1, c: startCol + colspan - 1 }, v: label, t: 's' }); return startCol + colspan; } if (rowspan > 1) { array.push({ s: { r: startRow, c: startCol }, e: { r: startRow + rowspan - 1, c: startCol }, v: label, t: 's' }); return startCol + colspan; } if (colspan > 1) { array.push({ s: { r: startRow, c: startCol }, e: { r: startRow, c: startCol + colspan - 1 }, v: label, t: 's' }); return startCol + colspan; } array.push({ s: { r: startRow, c: startCol }, e: { r: startRow + rowspan - 1, c: startCol + colspan - 1 }, v: label, t: 's' }); return startCol + colspan; }; var result = []; for (var i = 0; i < tableHeadRows.length; i++) { var row = tableHeadRows[i]; var startCol = 0; for (var j = 0; j < i; j++) { var preRow = tableHeadRows[j].filter(function (item) { return item.name != 'SF_COUNT'; }); for (var _i = 0, preRow_1 = preRow; _i < preRow_1.length; _i++) { var item = preRow_1[_i]; if (item.rowspan > i) { startCol += item.colspan; } } } for (var _a = 0, row_1 = row; _a < row_1.length; _a++) { var cell = row_1[_a]; startCol = fn(i, startCol, cell, result); } } return result; }; var calcBodyCellObjs = function (datas, columns, keepFormat) { if (keepFormat === void 0) { keepFormat = true; } return datas.map(function (data) { return columns.map(function (column) { var _a, _b, _c, _d, _e, _f; var dataTypeArr = ['number', 'static-number', 'input-number', 'progress', 'static-progress']; var isNumerical = dataTypeArr.includes(column.type); var isMapping = column.type == 'mapping'; var isPercentage = column.pristine.isPercentage; var prefix = column.pristine.prefix; var name = column.name; var isCurrency = Boolean(prefix) && column.type == 'number'; var precision = (_a = column.pristine.precision) !== null && _a !== void 0 ? _a : 0; var place = new Array(precision).fill(0).join(''); var numFormat = precision > 0 ? "0." + place + "_ " : '0_ '; var perFormat = precision > 0 ? "0." + place + "%" : '0%'; var curFormat = prefix + "#,##0." + place + ";" + prefix + "-#,##0." + place; var value = (_b = data[name]) !== null && _b !== void 0 ? _b : undefined; return { v: isPercentage && !isNaN(+value) ? +(value) / 100 : isMapping ? (_f = (_e = (_d = (_c = column.map) === null || _c === void 0 ? void 0 : _c[value]) === null || _d === void 0 ? void 0 : _d.replace) === null || _e === void 0 ? void 0 : _e.call(_d, /\n|\r|<[^>]*>/g, '')) !== null && _f !== void 0 ? _f : value : value !== null && value !== void 0 ? value : '', t: isNumerical || isPercentage ? 'n' : 's', z: !keepFormat ? undefined : (isCurrency ? curFormat : isPercentage ? perFormat : isNumerical ? numFormat : undefined) }; }); }); }; //# sourceMappingURL=./utils/xlsx.js.map