UNPKG

ze-react-component-library

Version:
56 lines (46 loc) 1.84 kB
import "antd/es/message/style"; import _message from "antd/es/message"; 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); } import { getExportFileName } from "../util"; export function excelExporter(data, filename, XLSX, // 外部的XLSX库 merge) { if (merge === void 0) { merge = []; } if (!XLSX) return _message.error("需要传入XLSX库才能使用导出功能"); if ((filename === null || filename === void 0 ? void 0 : filename.length) === 0) { return _message.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, getExportFileName(excelName), { compression: true }); }