二维数组下载为excel(导出)
/*导出*/
const s2ab = function(s) {
const buf = new ArrayBuffer(s.length);
const view = new Uint8Array(buf);
for(let i = 0; i < s.length; i++) view[i] = s.charCodeAt(i) & 0xFF;
return buf;
}
const exportClick = async function() {
//多个组数据处理
let idList = []
multipleSelection.value.forEach(item => {
idList.push({
group: item.name,
interval: item.interval
})
})
if(multipleSelection.value.length > 0) {
var k = 0
var jsonArr = []
for(var g = 0; g < idList.length; g++) {
k++
await tags({
group: idList[g].group,
node: router.currentRoute.value.query.node
}).then(res => {
if(res.status == 200) {
for(var i = 0; i < res.data.tags.length; i++) {
res.data.tags[i].group = idList[g].group
res.data.tags[i].interval = idList[g].interval
if(res.data.tags[i].attribute == 1) {
res.data.tags[i].attribute = 'Read'
} else if(res.data.tags[i].attribute == 2) {
res.data.tags[i].attribute = 'Write'
} else if(res.data.tags[i].attribute == 3) {
res.data.tags[i].attribute = 'Read Write'
} else if(res.data.tags[i].attribute == 4) {
res.data.tags[i].attribute = 'Subscribe'
} else if(res.data.tags[i].attribute == 5) {
res.data.tags[i].attribute = 'Read Subscribe'
} else if(res.data.tags[i].attribute == 6) {
res.data.tags[i].attribute = 'Write Subscribe'
} else if(res.data.tags[i].attribute == 7) {
res.data.tags[i].attribute = 'Read Write Subscribe'
}
if(res.data.tags[i].type == 3) {
res.data.tags[i].type = 'INT16'
} else if(res.data.tags[i].type == 4) {
res.data.tags[i].type = 'UINT16'
} else if(res.data.tags[i].type == 5) {
res.data.tags[i].type = 'INT32'
} else if(res.data.tags[i].type == 6) {
res.data.tags[i].type = 'UINT32'
} else if(res.data.tags[i].type == 7) {
res.data.tags[i].type = 'INT64'
} else if(res.data.tags[i].type == 8) {
res.data.tags[i].type = 'UINT64'
} else if(res.data.tags[i].type == 9) {
res.data.tags[i].type = 'FLOAT'
} else if(res.data.tags[i].type == 10) {
res.data.tags[i].type = 'DOUBLE'
} else if(res.data.tags[i].type == 11) {
res.data.tags[i].type = 'BIT'
} else if(res.data.tags[i].type == 13) {
res.data.tags[i].type = 'STRING'
} else if(res.data.tags[i].type == 14) {
res.data.tags[i].type = 'BYTES'
}
jsonArr.push(res.data.tags[i])
}
if(k == idList.length) {
const data = jsonArr.map(obj => [obj.group, obj.interval, obj.name, obj.address, obj.attribute, obj.type, obj.description, obj.decimal, obj.precision]);
data.unshift(['group', 'interval', 'name', 'address', 'attribute', 'type', 'description', 'decimal', 'precision', ])
/*二维数组下载为excel*/
const worksheet = XLSX.utils.aoa_to_sheet(data);
const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
const element = document.createElement('a');
const blob = new Blob([s2ab(XLSX.write(workbook, {
bookType: 'xlsx',
type: 'binary'
}))], {
type: "application/octet-stream"
});
element.href = URL.createObjectURL(blob);
element.download = 'tags.xlsx';
element.click(); // 模拟点击下载
ElMessage({
type: 'success',
message: '导出成功',
})
getListFun()
}
} else {
ElMessage({
type: 'error',
message: res.data.message,
})
}
}).catch(err => {
console.log(err);
})
}
} else {
ElMessage({
type: 'info',
message: '请至少选择一条导出的数据!'
})
}
}
注意:
记得安包XLSX
引用 import * as XLSX from 'xlsx'

浙公网安备 33010602011771号