vue实现导入文件功能

今天有个需求是导入xlsx文件,我想了想就写了一个这样的代码,提供参考一下

<template>
 <div class="healthy-doc"> 
    <div class="file-upload" style="padding-left:10px">
         <input type="file" ref="fileInputs" @change="onFileChanges" class="file-input">
         <el-button type="primary" round size="mini">导&nbsp;入</el-button>
    </div>
 </div>
<template>
<script>
export default {
 data () {
   return {

   }
},
 methods:{
     //文件上传
     onFileChanges(){
        //定义上传封装的对象
        const formData = new FormData();
        //获取上传的问file
        const file = this.$refs.fileInputs.files[0];
        //之所以是file 是以为后端接受的就是file 所以这个file一点的和后端的保持一直
        formData.append('file',file);
        //这个是就是一个上传等待的动画,这个你可以根据你自己的需要来修改
        const loading = this.$loading({
            lock: true,
            text: '请等待',
            spinner: 'el-icon-loading',
            background: 'rgba(0, 0, 0, 0.7)'
        });
        console.log(formData,'formData');
        //这个是上传的路径 其中dashboard/importDataFile 这个是我自己封装的路径,你可以写你的                
        //上传路径
        this.$store.dispatch("dashboard/importDataFile",formData).then(res=>{
            console.log(res,'66666');
            this.$message({
                message: '导入成功',
                type: 'warning'
            });
            //这个是刷新页面
            location.reload();
            //这个是查询的方法,你可以加上你的,这个也可以去掉(都行,建议测试的去掉)
            this.getPatientList();
            setTimeout(() => {
                //关闭动画
                loading.close();
            }, 2000);   
        })
     },

}


}
</script>
<style lang="scss" scoped>
   .healthy-doc {
     padding: 10px 15px;
     width: 100%;
   }
   .file-upload {
     position: relative;
     display: inline-block;
   }
  .file-input {
    position: absolute;
    left: 0;
    top: 0;
    opacity: 0;
    width:100px;
  }
</style>

以上代码你拿过来就能直接用

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Vue ElementUI提供了导入Excel的功能,可以通过以下步骤实现: 1. 安装依赖:使用npm或yarn安装xlsx和file-saver依赖。 2. 引入ElementUI组件:在需要使用导入Excel功能的组件中引入el-upload组件。 3. 配置el-upload组件:设置上传文件类型为.xlsx或.xls,设置上传文件大小限制,设置上传成功后的回调函数。 4. 解析Excel数据:在上传成功的回调函数中,使用xlsx依赖解析上传的Excel文件数据。 5. 处理解析后的数据:将解析后的数据进行处理,例如将数据存储到数据库中。 以上就是Vue ElementUI导入Excel功能实现步骤。 ### 回答2: 要在Vue项目中使用ElementUI导入Excel功能,首先需要安装相关依赖包。可以使用npm或者yarn进行安装。 1. 打开终端,进入项目目录,执行以下命令安装依赖: ``` npm install xlsx file-saver --save ``` 或 ``` yarn add xlsx file-saver ``` 2. 在需要使用导入Excel功能Vue组件中,引入相关库和组件: ```javascript import XLSX from 'xlsx'; import { saveAs } from 'file-saver'; ``` 3. 在Vue组件中添加一个`<input>`元素,用于选取Excel文件: ```html <input type="file" ref="fileInput" @change="handleFileChange" /> ``` 4. 在Vue组件的methods中添加处理Excel文件上传的方法: ```javascript methods: { handleFileChange(event) { const file = event.target.files[0]; const reader = new FileReader(); reader.onload = (e) => { const data = new Uint8Array(e.target.result); const workbook = XLSX.read(data, { type: 'array' }); // 处理Excel数据,例如通过循环或者其他方式处理每一行的数据 workbook.Sheets[workbook.SheetNames[0]]; // 获取第一个Sheet的数据 // 将处理后的数据导出为Excel文件 const wbout = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' }); const blob = new Blob([wbout], { type: 'application/octet-stream' }); saveAs(blob, 'output.xlsx'); }; reader.readAsArrayBuffer(file); } } ``` 5. 最后,可以通过上传Excel文件的`<input>`元素触发文件选择,并调用`handleFileChange`方法处理Excel数据。 需要注意的是,上述代码只是一个简单的示例,具体的处理Excel数据的逻辑需要根据实际需求进行调整。 ### 回答3: Vue ElementUI提供了导入Excel功能,可以方便地将Excel文件的数据导入Vue组件中进行操作和展示。要实现这个功能,可以按照以下步骤进行操作: 1. 安装依赖: 首先,需要安装ElementUI和xlsx依赖。可以使用npm或者yarn进行安装,命令如下: ``` npm install element-ui xlsx --save ``` 2. 引入所需组件: 在需要使用导入Excel功能Vue组件中,引入el-upload组件和el-dialog组件,用于选择文件和展示导入的数据。 3. 创建上传组件: 在Vue组件的模板中,使用el-upload组件来实现文件上传功能。设置type为"drag",可以支持拖拽上传文件。设置action属性为上传文件的接口地址。 4. 监听上传事件: 在Vue组件的方法中,监听el-upload组件的上传事件。可以通过接口将上传的Excel文件保存到服务器,并返回文件的路径。 5. 解析Excel文件: 在Vue组件的方法中,使用xlsx库来解析上传的Excel文件。可以先使用文件路径读取Excel文件,然后解析其中的数据。 6. 展示数据: 使用el-dialog组件来展示导入的数据。将解析得到的Excel数据传递给el-dialog组件的content属性。 通过以上步骤,就可以实现Vue ElementUI的导入Excel功能。用户可以选择文件,上传Excel文件到服务器,然后解析文件内容并展示在Vue组件中的el-dialog组件中。这样,用户就可以方便地导入Excel数据并在Vue应用中使用了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值