fastlion-amis
Version:
一种MIS页面生成工具
80 lines (79 loc) • 3.11 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.exportRowData = void 0;
var tslib_1 = require("tslib");
var XLSX = tslib_1.__importStar(require("xlsx"));
var sheet2blob = function (sheet, sheetName) {
sheetName = sheetName || 'sheet1';
var workbook = {
SheetNames: [sheetName],
Sheets: {}
};
workbook.Sheets[sheetName] = sheet;
// 生成excel的配置项
var wopts = {
bookType: 'xlsx',
bookSST: false,
// 是否生成Shared String Table,官方解释是,如果开启生成速度会下降,但在低版本IOS设备上有更好的兼容性
type: 'binary'
};
var wbout = XLSX.write(workbook, wopts);
var blob = new Blob([s2ab(wbout)], {
type: "application/octet-stream"
});
// 字符串转ArrayBuffer
function s2ab(s) {
var buf = new ArrayBuffer(s.length);
var view = new Uint8Array(buf);
for (var i = 0; i !== s.length; ++i)
view[i] = s.charCodeAt(i) & 0xFF;
return buf;
}
return blob;
};
var openDownloadDialog = function (url, saveName) {
// 此方法创建了a标签 利用a标签的download属性进行下载文件
if (typeof url == 'object' && url instanceof Blob) {
url = URL.createObjectURL(url); // 创建blob地址
}
var aLink = document.createElement('a');
aLink.href = url;
aLink.download = saveName || '';
// HTML5新增的属性,指定保存文件名,可以不要后缀,注意,file:///模式下不会生效
var event;
if (window.MouseEvent)
event = new MouseEvent('click');
else {
event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
}
aLink.dispatchEvent(event);
};
var exportRowData = function (mode, data, id) {
var _title = '当前数据';
var _suffix = '.xlsx';
var json = [];
var _items = {};
var _modeDist = {};
mode.forEach(function (_mode) {
var _a, _b;
if ((_mode === null || _mode === void 0 ? void 0 : _mode.group) && ((_a = _mode === null || _mode === void 0 ? void 0 : _mode.group) === null || _a === void 0 ? void 0 : _a.length) >= 1) {
(_b = _mode === null || _mode === void 0 ? void 0 : _mode.group) === null || _b === void 0 ? void 0 : _b.forEach(function (_item) {
_modeDist[_item.name] = _item.label;
});
}
else {
_modeDist[_mode.name] = _mode.label;
}
});
Object.keys(data).forEach(function (_ele) {
if (_modeDist.hasOwnProperty(_ele)) {
_items[_modeDist[_ele]] = data[_ele];
}
});
json.push(_items);
var sheet = XLSX.utils.json_to_sheet(json);
openDownloadDialog(sheet2blob(sheet, undefined), '数据行' + _suffix);
};
exports.exportRowData = exportRowData;
//# sourceMappingURL=./renderers/Lion/Table/LionTable/components/MainExport/common.js.map
;