前端实现excel文件导入

 npm install file-saver xlsx -S
 npm install script-loader -D

<template>
    <div>
        <el-upload
                :show-file-list="false"
                action=""
                :on-change="handleChange"
                accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel"
                :auto-upload="false">
            <el-button size="small" type="primary">点击上传</el-button>
            <div slot="tip">只 能 上 传 xlsx / xls 文 件</div>
        </el-upload>

        <el-table
                :data="tableData"
                style="width: 100%">
            <div v-for ="(item,key,index) in tableData[0]" :key="index">
                <el-table-column
                        :prop="key"
                        :label="key"
                       >
                </el-table-column>
            </div>


        </el-table>
    </div>
</template>

<script>
    export default {
        name: "index",
        data(){
            return {
                limitUpload:1,
                tableData:[]
            }
        },
        methods:{

            handleChange(file, fileList){
                this.importfxx(file.raw)
            },

            importfxx(obj) {

                let _this = this;

                let inputDOM = this.$refs.inputer;

                // 通过DOM取文件数据

                this.file = event.currentTarget.files[0];

                var rABS = false; //是否将文件读取为二进制字符串

                var f = this.file;

                var reader = new FileReader();

                //if (!FileReader.prototype.readAsBinaryString) {

                FileReader.prototype.readAsBinaryString = function(f) {

                    var binary = "";

                    var rABS = false; //是否将文件读取为二进制字符串

                    var pt = this;

                    var wb; //读取完成的数据

                    var outdata;

                    var reader = new FileReader();

                    reader.onload = function(e) {

                        var bytes = new Uint8Array(reader.result);

                        var length = bytes.byteLength;

                        for(var i = 0; i < length; i++) {

                            binary += String.fromCharCode(bytes[i]);

                        }

                        var XLSX = require('xlsx');

                        if(rABS) {

                            wb = XLSX.read(btoa(fixdata(binary)), { //手动转化

                                type: 'base64'

                            });

                        } else {

                            wb = XLSX.read(binary, {

                                type: 'binary'

                            });

                        }

                        outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]);//outdata就是你想要的东西

                        this.da = [...outdata]

                        let arr = []

                        console.log(outdata);
                        _this.tableData = outdata

                        this.da.map(v => {

                            let obj = {}

                            obj.id = v.id

                            obj.status = v.status

                            arr.push(obj)

                        })

                        let para = {

                            //withList: JSON.stringify(this.da)

                            withList: arr

                        }

                        _this.$message({

                            message: '请耐心等待导入成功',

                            type: 'success'

                        });

                        // withImport(para).then(res => {

                        //  window.location.reload()

                        // })



                    }

                    reader.readAsArrayBuffer(f);

                }

                if(rABS) {

                    reader.readAsArrayBuffer(f);

                } else {

                    reader.readAsBinaryString(f);

                }

            }
        }
    }
</script>

 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值