ze-react-component-library
Version:
ZeroETP React Component Library
67 lines (52 loc) • 2.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.excelExporter = excelExporter;
require("antd/lib/message/style");
var _message2 = _interopRequireDefault(require("antd/lib/message"));
var _util = require("../util");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
function excelExporter(data, filename, XLSX, // 外部的XLSX库
merge) {
if (merge === void 0) {
merge = [];
}
if (!XLSX) return _message2.default.error("需要传入XLSX库才能使用导出功能");
if ((filename === null || filename === void 0 ? void 0 : filename.length) === 0) {
return _message2.default.error("导出的文件必须设定文件名");
}
var excelName = filename + ".xlsx";
var arr = data.map(function (d) {
return d.map(function (item) {
if (item === null || item === undefined) return "";
if (_typeof(item) === "object" && "formatter" in item) {
return {
v: item.v,
t: "n",
z: item.formatter
};
}
return item;
});
});
var worksheet = XLSX.utils.aoa_to_sheet(arr);
worksheet["!merges"] = merge; // formula
for (var row = 0; row < arr.length; row++) {
for (var col = 0; col < arr[row].length; col++) {
var element = arr[row][col];
if (typeof element === "string" && element.startsWith("=")) {
worksheet[XLSX.utils.encode_cell({
c: col,
r: row
})].f = element;
}
}
}
var workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet);
XLSX.writeFileXLSX(workbook, (0, _util.getExportFileName)(excelName), {
compression: true
});
}