我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何使用vue实现前端导入excel数据

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何使用vue实现前端导入excel数据

前言

继前边的vue的导出功能后,自己又去在网上搜了vue导入excel一些文章,自己通过对代码的整理和调整,实现了vue导入excel的功能。

一、主界面先引入导入组件

1.这段主要是中间的那段excel-import标签的那部分代码,loadList是后边导入成功后,子组件要调用的方法,这个方法是导入成功后,刷新表格数据的

  <a-space class="crud-buttons">
                <a-button @click="handleEdit" type="primary">
                    <a-icon type="edit"></a-icon>
                    修改
                </a-button>
                <excel-import @fatherMethod="loadList"></excel-import>
                <a-button @click="exportData" type="danger" :loading="btnLoading">  <a-icon type="upload" />导出</a-button>
                <a-button type="primary" @click="grantWelfare">
                    <a-icon type="plus"></a-icon>
                    发放
                </a-button>
            </a-space>

路径根据你们的要求自行修改

import excelImport from "../../components/excel-import"

二、封装excel-import组件

1.首先是template代码(这里用的是ant vue desgin框架的组件)

<template>
    <div class="import">
        <a-button @click="exportData" type="primary"><a-icon type="import" />导入</a-button>
        <a-modal v-model="visible" title="导入数据" @ok="handleOk"  @cancel="handleCancel" width="400px">
            <a-upload-dragger :file-list="fileList" :multiple="false"
                              :before-upload="beforeUpload" :remove="removeFile">
                <p class="ant-upload-drag-icon">
                    <a-icon type="inbox"/>
                </p>
                <p class="ant-upload-hint">
                    仅允许导入xls、xlsx格式文件
                </p>
            </a-upload-dragger>
        </a-modal>
 
    </div>
</template>

2.引入接口

import WelfareApi from '@/api/master/welfare'

3.js代码methods

exportData(){
                this.visible=true
            },
          async handleOk(){
                if (this.data.length === 0) {
                    this.$message.error("请选择要上传的文件")
                } else {
                    const data=await WelfareApi.importExcelData(this.data)
                    this.$message.success(data.message)
                    this.visible=false;
                    this.fileList=[]
                    this.$emit('fatherMethod');
                }
            },
            handleCancel(){
            this.fileList=[]
            this.visible=false
            },
            // 文件上传前的钩子
            beforeUpload(file) {
                const isXslx =
                    file.type ===
                    "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" || file.type === "application/vnd.ms-excel";
                const isLt2M = file.size / 1024 / 1024 < 2;
                if (!isXslx) {
                    this.$message.error("附件格式错误,请删除后重新上传!");
                }
                if (isXslx) {
                    if (this.fileList.length == 0) {
                        this.fileList = [...this.fileList, file]
                        this.importfxx(this.fileList);
                    } else {
                        this.$message.error("仅能选择一个文件进行上传!")
                    }
                }
                if (!isLt2M) {
                    this.$message.error("上传文件大小不能超过 2MB!");
                }
                return false
            },
            removeFile(file) {
                const index = this.fileList.indexOf(file);
                const newFileList = this.fileList.slice();
                newFileList.splice(index, 1);
                this.fileList = newFileList;
            },
            importfxx(obj) {
                let _this = this;
                let inputDOM = this.$refs.inputer;
                // 通过DOM取文件数据
 
                this.file = event.currentTarget.files[0];
 
                let rABS = false; //是否将文件读取为二进制字符串
                let f = this.file;
 
                let reader = new FileReader();
                FileReader.prototype.readAsBinaryString = function (f) {
                    let binary = "";
                    let rABS = false; //是否将文件读取为二进制字符串
                    let pt = this;
                    let wb; //读取完成的数据
                    let outdata;
                    let reader = new FileReader();
                    reader.onload = function (e) {
                        let bytes = new Uint8Array(reader.result);
                        let length = bytes.byteLength;
                        for (let i = 0; i < length; i++) {
                            binary += String.fromCharCode(bytes[i]);
                        }
                        //此处引入,用于解析excel
                        let 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.id = v['序号']
                            obj.dpStage = v['DP班号']
                            obj.traineeName = v['学员姓名']
                            obj.name = v['收货人姓名']
                            obj.mobile = v['收货人电话']
                            obj.province = v['省']
                            obj.city = v['市']
                            obj.district = v['区']
                            obj.detailAddr = v['详细地址']
                            obj.expressName = v['快递名称']
                            obj.expressNumber = v['快递编号']
                            obj.expressTime = v['发货时间']
                            obj.statusName = v['状态']
                            arr.push(obj)
                        });
                        _this.data=arr;
                        _this.dalen=arr.length;
                        return arr;
                    };
                    reader.readAsArrayBuffer(f);
                };
                if (rABS) {
                    reader.readAsArrayBuffer(f);
                } else {
                    reader.readAsBinaryString(f);
                }
            }

这里有几点注意的地方

在对outdata处理的时候,例如obj.id=v['序号']

这里的id就是传给后端的对象集合中对象的属性名,后端也要用对应的model接收

这里的序号就是excel表格的表头列名,一定要文字对应,不然会导入失败

三.附加提示(后端也要写的小伙伴可以参考下边建议哈)

我们传给后端的数据,应该是一个集合形式,在后端一般需要对数据进行处理,因为我们要把数据insert到我们的数据库中去,当然可能会有重复的数据(比如说导入的是用户信息,数据库里存在这个人的,你要导入的excel也存在)如果要求是修改的话,这时候就要根据的唯一标识(id,或者是电话、身份证号等等)来分情况做处理到底是新增还是修改。最后我还建议可以设置两个变量,一个来记录成功导入数据库的记录数量,一个记录覆盖(修改)记录的数量,然后返回给前端。

四.总结

以上就是今天要讲的内容,本文介绍了vue导入excel的使用,主要就是在前端把要导入的excel进行处理,最后把整理好的数据传给后端,添加进数据库中。

到此这篇关于如何使用vue实现前端导入excel数据的文章就介绍到这了,更多相关vue前端导入excel数据内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何使用vue实现前端导入excel数据

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何使用vue实现前端导入excel数据

在实际开发中导入功能是非常常见的,导入功能前端并不难,下面这篇文章主要给大家介绍了关于如何使用vue实现前端导入excel数据的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2023-05-17

Vue如何实现导入Excel功能

这篇文章主要介绍了Vue如何实现导入Excel功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.前端主导实现步骤第一步,点击页面上的导入按钮,读入Excel文件利用插件完
2023-06-20

javascript怎么实现纯前端将数据导出excel

这篇文章主要介绍了javascript怎么实现纯前端将数据导出excel的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇javascript怎么实现纯前端将数据导出excel文章都会有所收获,下面我们一起来看看吧
2023-07-02

使用Blazor框架实现在前端浏览器中导入和导出Excel

Blazor框架前端Excel导入导出本文介绍了如何在Blazor框架中实现前端Excel导入和导出。导入:使用IJSRuntime服务从浏览器API读取文件。导出:使用OfficeOpenXml库创建Excel工作簿,将其保存到流中并返回给浏览器下载。注意事项:注入IJSRuntime服务。调整请求头以匹配导出文件格式。根据需求提供额外功能。优点:本机支持Excel交互。客户端完成,无需服务器往返。交互式体验。缺点:依赖浏览器兼容性。大型文件可能耗时。
使用Blazor框架实现在前端浏览器中导入和导出Excel
2024-04-02

DBeaver如何实现导入excel中的大量数据

目录DBeaver如何导入excel中的大量数据步骤一:将Excel文件转换为CSV格式步骤二:在DBeaver中创建数据库表(如果尚未创建)步骤三:导入CSV文件到数据库表注意事项总结DBeaver如何导入excel中的大量数据之前也让
DBeaver如何实现导入excel中的大量数据
2024-10-18

如何使用Oracle实现数据导入和导出

要使用Oracle实现数据导入和导出,可以使用以下方法:数据导入:使用Oracle SQL Developer工具:可以通过Oracle SQL Developer工具来导入数据。在SQL Developer中,选择要导入数据的表,然后使
如何使用Oracle实现数据导入和导出
2024-03-02

C#如何使用NPOI对Excel数据进行导入导出

本篇内容介绍了“C#如何使用NPOI对Excel数据进行导入导出”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、概述NPOI 是 POI
2023-07-02

C#中如何使用NPOI实现Excel导入导出功能

本文小编为大家详细介绍“C#中如何使用NPOI实现Excel导入导出功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#中如何使用NPOI实现Excel导入导出功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧
2023-06-29

小程序中如何实现excel数据批量导入

本篇内容介绍了“小程序中如何实现excel数据批量导入”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1 建立数据源要想将数据入库,就先需要建
2023-07-02

基于Java SSM如何实现Excel数据批量导入

今天就跟大家聊聊有关基于Java SSM如何实现Excel数据批量导入,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。导入Maven依赖com
2023-06-21

如何使用java实现百万级别数据导出excel

这篇文章主要介绍了如何使用java实现百万级别数据导出excel的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用java实现百万级别数据导出excel文章都会有所收获,下面我们一起来看看吧。在业务系统中,
2023-07-05

excel怎么用宏实现自动导入数据

要实现自动导入数据,可以使用宏来执行以下步骤:1. 打开Excel文件,按下"ALT + F11"打开VBA编辑器。2. 在VBA编辑器中,选择你要运行宏的工作簿。3. 在VBA编辑器的"插入"菜单中,选择"模块"。4. 在新建的模块中,编
2023-09-12

Python如何实现数据写入Excel

这篇文章主要讲解了“Python如何实现数据写入Excel”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python如何实现数据写入Excel”吧!写入后的格式如下图所示:以下为数据用例:i
2023-06-15

编程热搜

目录