导入导出

vue项目的导入导出

最近有一个关于导入导出的项目需求,现在就来整理一下。一般来说,导入分为两种:一是导入文件,文件内容由后台解析。二是由前端解析;在这只是向后台发送文件,由后台解析。

技术

采用vue+elementui,另外下载了两个依赖:npm i -S file-saver xlsx

导入

具体的参数说明可去elementui官网的上传组件查看

<template>
	<el-upload
		class="upload-demo"
		 ref="upload"
		 accept=".xls,.xlsx,.csv"
		 :headers="headers"
		 :before-upload="beforeAvatarUpload"
		 action="后台地址"
		 :on-success="uploadSuccess"
		 :on-error="uploadFalse"
		 :on-preview="handlePreview"
		 :auto-upload="false">
		     <el-button placeholder="请选择文件" slot="trigger">读取文件</el-button>
		     <el-button @click="submitUpload">上传</el-button>
	</el-upload>
</template>
data(){
	return{
		headers: {
            Authorization: "Bearer "+JSON.parse(sessionStorage.getItem("user")).token  //token
         },
	}
}
methods:{
	  submitUpload() {
            this.$refs.upload.submit();
      },
      uploadSuccess(response, file, fileList) {
          if (response.code==200) {
              this.$message.success("导入成功!");
              this.$router.push("/personallist");
          } else {
              if(response.data.length == 0){
                  this.$message.error(response.message);
              }
          }
      },
      uploadFalse(response, file, fileList) {
          if(response.data.length == 0){
              this.$message.error(response.message);
          }
      },
      beforeAvatarUpload(file) {
          const extension = file.name.split(".")[1] === "xls";
          const extension2 = file.name.split(".")[1] === "xlsx";
          const extension3 = file.name.split(".")[1] === "csv";
          const isLt2M = file.size / 1024 / 1024 < 4;
          if (!extension && !extension2 && extension3) {
              this.$message.error("上传模板只能是 xls、xlsx、csv格式!");
          }
          if (!isLt2M) {
              this.$message.error("上传模板大小不能超过 4MB!");
          }
          return extension || extension2 || extension3;
      },
      handlePreview(file) {
          if (file.response.status) {
              this.$message.success("文件导入成功!");
          } else {
              this.$message.error("此文件导入失败!");
          }
      }
}

导出

首先在需要导出的组件引入

import FileSaver from "file-saver";
import XLSX from "xlsx";

注意:还需要在axios设置

export function exportFiles(data){
  return request({
    url: "地址",
    method: 'post',
    responseType: 'blob',
    dataType: 'json',
    data:data
  })
}
现在开始:

<el-button @click=“exportFile”>开始导出


exportFile(){
let params={
fileName:“人员信息表”
}
exportFiles(params).then(res=>{
FileSaver.saveAs(new Blob([res], { type: ‘application/vnd.ms-excel;charset=utf-8’ }), ‘文件名:人员信息表.xlsx’);
})
.catch(err=>{
console.log(err);
})
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值