vue中通过Export2Excel导成excel
接口:
order.js
export (data) {
return xhr
.request({
url: '/api/order_static/exportperday',
method: 'get',
params: data,
responseType: 'blob'
})
.catch(err => {
console.log('err', err)
})
}
安装依赖:
npm install -S file-saver npm install -S xlsx npm install -D script-loader
在项目src文件夹下新建文件夹vendor,将Export2Excel.js 文件放入文件夹下。
页面中:
<el-button
icon="el-icon-download"
type="warning"
:loading="downloadLoading"
@click="handleExport()"
v-if="$_has('export')"
>导出</el-button>
<script>
import { order } from "@/api/order";
export default {
data() {
return {
downloadLoading: false,
listLoading: false,
listQuery: {
Params: {
StartDate: "",
EndDate: ""
},
PageIndex: 1,
PageSize: 10
},
totleNum: 0,
list: [],
filename: ""
};
},
created() {
this.fetchList(this.listQuery);
},
components: {},
watch: {},
mounted() {},
methods: {
。。。。。。
handleExport() {
this.downloadLoading = true;
const defaultSettings = require("@/settings.js");
let url =
defaultSettings.url +
"api/order_static/exportperday?StartDate=" +
this.listQuery.Params.StartDate +
"&EndDate=" +
this.listQuery.Params.EndDate;
console.log(url);
window.open(url);
order.export(this.listQuery.Params).then(res => {
this.list = res.data.Data;
});
this.filename =
this.listQuery.Params.StartDate +
"-" +
this.listQuery.Params.EndDate +
"账单统计";
import("@/vendor/Export2Excel").then(excel => {
const tHeader = [
"日期",
"户数",
"卡表气量",
"核算气量",
"现金",
"微信",
"农行",
"应收",
"实收"
];
// 需要导出的列名
const filterVal = [
"Date",
"RegionCount",
"CardGasTotal",
"CheckGasTotal",
"CashTotal",
"VXTotal",
"NongHangTotal",
"FeeTotal",
"PaymentTotal"
];
// 接口获得的所有数据
const list = this.list;
const data = this.formatJson(filterVal, list);
excel.export_json_to_excel({
header: tHeader,
data,
filename: this.filename,
autoWidth: true,
bookType: "xlsx"
});
this.downloadLoading = false;
});
},
formatJson(filterVal, jsonData) {
return jsonData.map(v =>
filterVal.map(j => {
if (j === "timestamp") {
return parseTime(v[j]);
} else {
return v[j];
}
})
);
}
}
};
</script>

浙公网安备 33010602011771号