安装引入
import FileSaver from 'file-saver';
import XLSX from 'xlsx';
exportFunc(e) {
// 从表生成工作簿对象
const wb = XLSX.utils.table_to_book(document.getElementById('out-table'));
// 得到二进制字符串作为输出
const wbout = XLSX.write(wb, {
bookType: 'xlsx',
type: 'binary',
});
FileSaver.saveAs(new Blob([this.s2ab(wbout)], {
type: 'application/octet-stream',
}), 'a.xlsx');
console.log("列表d阿初",wb)
},
s2ab(s) {
let cuf;
let i;
if (typeof ArrayBuffer !== 'undefined') {
cuf = new ArrayBuffer(s.length);
const view = new Uint8Array(cuf);
for (i = 0; i !== s.length; i++) {
view[i] = s.charCodeAt(i) & 0xFF;
}
return cuf;
}
cuf = new Array(s.length);
for (i = 0; i !== s.length; ++i) {
cuf[i] = s.charCodeAt(i) & oxFF;
}
return cuf;
},
添加数据
exportFunc(row){
console.log("执行",this.selectedState.length)
console.log(row);
console.log(this.varData)
const defaultCellStyle = { font: { name: "Verdana", sz: 11, color: "FF00FF88"}, fill: {fgColor: {rgb: "FFFFAA00"}}};
const wopts = { bookType:'xlsx', bookSST:false, type:'binary', defaultCellStyle: defaultCellStyle, showGridLines: false};
const wb = { SheetNames: ['Sheet1'], Sheets: {}, Props: {} };
let data= ''; //存放要导出的数据 可能是数组 let data[]
if(this.selectedState.length ==0){
data = this.varData
console.log("dd",data)
}
if(this.selectedState.length != 0){
data = this.selectedState
console.log("ddw",data)
}
wb.Sheets['Sheet1'] = XLSX.utils.json_to_sheet(data)
//创建二进制对象写入转换好的字节流
let tmpDown = new Blob([this.s2abc(XLSX.write(wb, wopts))], { type: "application/octet-stream" })
FileSaver.saveAs(tmpDown, "表格.xls");
},
//字符串转字符流
s2abc (s) {
if (typeof ArrayBuffer !== 'undefined') {
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;
} else {
var buf = new Array(s.length);
for (var i = 0; i != s.length; ++i) buf[i] = s.charCodeAt(i) & 0xFF;
return buf;
}},