/**
* 导出csv文件
*/
async exportExcel() {
const selectedRow = this.selectedRows
let tableData = []
// 判断是否只导出选中记录
if (selectedRow && selectedRow.length > 0) {
tableData = selectedRow
} else {
const resp = await getAllEnterpD()
tableData = resp.data
}
const jsonData = {
trade: {
// 标题 this.tHead = ['姓名','性别']
tHeader: this.tHead,
// 要导出的字段 this.filterVal = ['name','gender']
filterVal: this.filterVal,
list: tableData
}
}
this.csvMethod(jsonData)
},
csvMethod(data) {
// csv文件:","逗号换列,\n换行,\t防止excel将长数字变科学计算法等样式
// 要导出的json数据 // 主表
const mainLists = data.trade
// ## 数据处理
// 一级表// 一级标题
const mainTitle = mainLists.tHeader
// 一级过滤
const mainTitleForKey = mainLists.filterVal
// 一级数据
const mainList = [...mainLists.list]
const mainStr = []
// 标题添加上换列转成字符串并存进数组
mainStr.push(mainTitle.join('\t,') + '\n')
for (let i = 0; i < mainList.length; i++) {
const temp = []
for (let j = 0; j < mainTitleForKey.length; j++) {
let listValue = mainList[i][mainTitleForKey[j]]
// 性别
if (mainTitleForKey[j] === 'leaderGender') {
listValue = listValue === 0 ? '男' : '女'
}
// 根据过滤器拿出对应的值
temp.push(listValue)
}
// 取出来的值加上逗号换列转字符串存数组
mainStr.push(temp.join('\t,') + '\n')
}
// 两个表数组转成字符串合并
const merged = mainStr.join('')
// ## 导出操作
// encodeURIComponent解决中文乱码
const uri = 'data:text/csv;charset=GBK,\ufeff' + encodeURIComponent(merged)
// 通过创建a标签实现
const link = document.createElement('a')
link.href = uri
// 对下载的文件命名
link.download = `${Date.now()}.csv`
document.body.appendChild(link)
link.click()
}
csv的导出
最新推荐文章于 2024-04-26 12:04:39 发布