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>    

  

  

 

   

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM