ze-react-component-library
Version:
ZeroETP React Component Library
114 lines (90 loc) • 2.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
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 getFormatter(t) {
var _a;
var text = t; // 负数处理
if (t.startsWith('-')) {
text = text.slice(1);
}
var unit = text.replaceAll(/[0-9.,]/g, "");
var bit = (_a = text.split(".")[1]) === null || _a === void 0 ? void 0 : _a.replace(unit, "").split("").reduce(function (p) {
return p + "0";
}, "");
var z;
if (bit) {
z = "0." + bit;
}
if (text.includes(",")) {
z = z ? "0," + z : "0,0";
}
if (unit) {
z = z ? t.startsWith(unit) ? "" + unit + z : "" + z + unit : "0" + unit;
}
return {
z: z,
unit: unit
};
}
function excelExporter(text, formattedText, 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 formattedArr = formattedText.split("\r\n").map(function (d) {
return d.split("\t").map(function (s) {
return s.slice(1, -1);
});
});
var arr = text.split("\r\n").map(function (d, i) {
return d.split("\t").map(function (s, ii) {
// 不展示的单位
var unitsToHide = ["亿", "万"]; // 去除多余的双引号
var v = s.slice(1, -1);
var formattedV = formattedArr[i][ii];
var n = Number(v);
if (v.trim().length === 0 || isNaN(n)) {
if (v === "null") {
return "";
}
unitsToHide.forEach(function (u) {
v = ("" + v).replace("(" + u + ")", '');
});
return v;
}
var _a = getFormatter(formattedV),
z = _a.z,
unit = _a.unit;
if (unitsToHide.includes(unit)) {
return {
v: n,
t: "n"
};
}
return {
v: n,
t: "n",
z: z
};
});
});
var worksheet = XLSX.utils.aoa_to_sheet(arr);
worksheet["!merges"] = merge;
var workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet);
XLSX.writeFileXLSX(workbook, (0, _util.getExportFileName)(filename), {
compression: true
});
}
var _default = excelExporter;
exports.default = _default;