vue加载外部文件方式一 ,通过es6-import方法引入使用
export const JSonToCSV = {
/*
* obj是一个对象,其中包含有:
* ## data 是导出的具体数据
* ## fileName 是导出时保存的文件名称 是string格式
* ## showLabel 表示是否显示表头 默认显示 是布尔格式
* ## columns 是表头对象,且title和key必须一一对应,包含有
title:[], // 表头展示的文字
key:[], // 获取数据的Key
formatter: function() // 自定义设置当前数据的 传入(key, value)
*/
setDataConver: function (obj) {
var bw = this.browser();
if (bw['ie'] < 9) return; // IE9以下的
var data = obj['data'],
ShowLabel = typeof obj['showLabel'] === 'undefined' ? true : obj['showLabel'],
fileName = (obj['fileName'] || 'UserExport') + '.csv',
columns = obj['columns'] || {
title: [],
key: [],
formatter: undefined
};
var ShowLabel = typeof ShowLabel === 'undefined' ? true : ShowLabel;
var row = "", CSV = '', key;
// 如果要现实表头文字
if (ShowLabel) {
// 如果有传入自定义的表头文字
if (columns.title.length) {
columns.title.map(function (n) {
row += n + ',';
});
} else {
// 如果没有,就直接取数据第一条的对象的属性
for (key in data) row += key + ',';
}
row = row.slice(0, -1); // 删除最后一个,号,即a,b, => a,b
CSV += row + '\r\n'; // 添加换行符号
}
let typeRow = '';
let valueRow = '';
var regex = /\[|\]|【|】/g;
for (key in data) {
let str = JSON.stringify(data[key]);
if (isNaN(str)) {
if (str === "false" || str === "true") {
typeRow += "boolean" + ',';
valueRow += JSON.stringify(data[key]) + ',';
} else if (regex.test(str)) {
typeRow += "array" + ',';
valueRow += '"' + data[key] + '",';
} else {
typeRow += "string" + ',';
valueRow += data[key] + ',';
}
} else {
typeRow += "int" + ',';
valueRow += JSON.stringify(data[key]) + ',';
}
}
typeRow = typeRow.slice(0, typeRow.length - 1); // 删除最后一个,
valueRow = valueRow.slice(0, value