2024年前端最新VueCli4,20道高频面试题(含答案)

基础面试题

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

主要内容包括:HTML,CSS,JavaScript,浏览器,性能优化等等

2、在main.js中引入XLSX

import XLSX from 'xlsx'
Vue.use(XLSX)

3、前面环境和依赖完成之后,我们开始创建Import.vue页面,放一个button上传按钮。

各参数说明可参考官方文档:https://www.jianshu.com/p/84b727a4b58a

  <!--limit:最大上传数,on-exceed:超过最大上传数量时的操作  -->
    <el-upload
        class="upload-demo"
        action=""
        :on-change="handleChange"
        :on-remove="handleRemove"
        :on-exceed="handleExceed"
        :limit="limitUpload"
        accept="application/vnd.openxmlformats-    
        officedocument.spreadsheetml.sheet,application/vnd.ms-excel"
        :auto-upload="false">
    <el-button size="small" type="primary">点击上传</el-button>
    </el-upload>

4、定义所需要的方法,代码如下(为了美观,加入了一些提示语和提示框)

        //上传文件时处理方法  
        handleChange(file, fileList){
            this.fileTemp = file.raw;
            if(this.fileTemp){
                if((this.fileTemp.type == 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') 
                    || (this.fileTemp.type == 'application/vnd.ms-excel')){
                    this.importfxx(this.fileTemp);
                } else {
                    this.$message({
                        type:'warning',
                        message:'附件格式错误,请删除后重新上传!'
                    })
                }
            } else {
                this.$message({
                    type:'warning',
                    message:'请上传附件!'
                })
            }
        },
        //超出最大上传文件数量时的处理方法
        handleExceed(){
            this.$message({
                type:'warning',
                message:'超出最大上传文件数量的限制!'
            })
            return;
        },
        //移除文件的操作方法
        handleRemove(file,fileList){
            this.fileTemp = null
        },

最重要的读取excel文件的方法:

         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]);
                    }
                    //此处引入,用于解析excel
                    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就是读取的数据(不包含标题行即表头,表头会作为对象的下标)
                    //此处可对数据进行处理
                    // let arr = [];
                    // outdata.map(v => {
                    //     let obj = {}
                    //     obj.code = v['Code']
                    //     obj.name = v['Name']
                    //     obj.pro = v['province']
                    //     obj.cit = v['city']
                    //     obj.dis = v['district']
                    //     arr.push(obj)
                    // });
                    // _this.da=arr;
                    // _this.dalen=arr.length;
                    return arr;
                };
                reader.readAsArrayBuffer(f);
            };
            if (rABS) {
                reader.readAsArrayBuffer(f);
            } else {
                reader.readAsBinaryString(f);
            }
        }

5、获取的数据及展示如下:

6、相关代码已经上传Github,地址如下:https://github.com/nieyangyang712/Excel-Import

7.全部代码如下:

<template>
  <div>
        <el-row :gutter="24" style="margin-bottom:20px;">
            <el-col :span="20" class="text-left">
                <!--limit:最大上传数,on-exceed:超过最大上传数量时的操作  -->
                <el-upload
                    class="upload-demo"
                    action=""
                    :on-change="handleChange"
                    :on-remove="handleRemove"
                    :on-exceed="handleExceed"
                    :limit="limitUpload"
                    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" class="el-upload__tip">只 能 上 传 xlsx / xls 文 件(excel表的标题必须是英文)</div>
                </el-upload>
            </el-col>
            <el-col :span="4" class="text-right">
                <el-button type="primary" size="small">
                    <a href="https://blog.csdn.net/qq_41646249/article/details/105123561">查看详细操作步骤</a>
                </el-button>
            </el-col>
        </el-row>
        <!-- 数据展示 -->
        <el-row :gutter="24" style="margin-bottom:20px;">
            <el-table :data="tabeData" border style="width: 100%">
                <el-table-column type="index" label="序号" width="60"></el-table-column>
                <el-table-column :formatter="dateFormat" prop="date" label="日期" width="150"></el-table-column>
                <el-table-column prop="name" label="姓名" width="150"></el-table-column>
                <el-table-column prop="province" label="省份" width="150"></el-table-column>
                <el-table-column prop="city" label="市区" width="150"></el-table-column>
                <el-table-column prop="address" label="地址"></el-table-column>
                <el-table-column prop="zip" label="邮编" width="150"></el-table-column>
                <el-table-column label="操作" width="200">
                </el-table-column>
            </el-table>
        </el-row>   
    </div>
</template>
<script>
import {nowTime} from '../../../filter/time.js';
import XLSX from 'xlsx'
import moment from 'moment'
  export default {
    data() {
      return {
        limitUpload:1,
        fileTemp:null,
        file:null,
        tabeData:[],
        dalen:0
      };
    },
    methods:{
        handleChange(file, fileList){
            this.fileTemp = file.raw;
            if(this.fileTemp){
                if((this.fileTemp.type == 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') || (this.fileTemp.type == 'application/vnd.ms-excel')){
                    this.importfxx(this.fileTemp);
                } else {
                    this.$message({
最后
--

**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/topics/618166371)**

> 最后写上我自己一直喜欢的一句名言:`世界上只有一种真正的英雄主义就是在认清生活真相之后仍然热爱它`
> ![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6L3lnVUFXMUlsN2FRMlNlT2VueEF1QTMxNDlEQmRDMlU0bzBpY21pYVloa2szeXVFZmNydGV4MGYxSWljdFJGNU9RYUw5TWJHb0hiTmtWQlBQUGliTng0RWJpY0EvNjQw?x-oss-process=image/format,png)



`
> ![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6L3lnVUFXMUlsN2FRMlNlT2VueEF1QTMxNDlEQmRDMlU0bzBpY21pYVloa2szeXVFZmNydGV4MGYxSWljdFJGNU9RYUw5TWJHb0hiTmtWQlBQUGliTng0RWJpY0EvNjQw?x-oss-process=image/format,png)



  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值