Vue + iView 纯前端excel数据导出

iview实现选择性的导出数据到excel表中 【前言】 系统的开发,大部分都有数据导出到excel表里面的操作,毕竟系统里面的数据需要保存起来的,但是有时候用户需要保存的字段做到有选择的,所以我今天给大家分享一个既可以漂亮的导出excel表,又可以实现有选择的导出数据的方法。 【前端】 1.添加导出的按钮,通过按钮来找到导出调后端的方法: <Button type="primary" size="large" @c... 阅读详情

纯前端excel数据导出


前言

为了便于用户更好的对数据进行筛选操作统计。


基于Vue框架、iView UI组件开发

一、需求

  1. 将表格中的所有数据导出
  2. 有数据则导出,无数据则提示导出失败

二、需求开发

1.需要用到的组件

代码如下(示例):

//导出按钮
<Row type="flex" justify="end" align="bottom" class="code-row-bg">
    <Button type="success" @click="tableExport">导出</Button>
    </Row>
//表格
<Table border :columns="tableInfo" :data="recordList.rows"></Table>
//分页
<Page :total="recordList.total" :page-size="recordList.limit" :current="recordList.page"  @on-change="changePageHandler" show-elevator show-total></Page>

表格展示如下(示例):
在这里插入图片描述

2.定义数据

代码如下(示例):

 data () {
    return {
      tableInfo: [
        {
          title: 'Name',
          key: 'name'
        },
        {
          title: 'Age',
          key: 'age'
        },
        {
          title: 'Num',
          key: 'num',
          render: (h, params) => {
            return h('span', this.showNum(params.row.num))
          }
        },
        {
          title: 'Address',
          key: 'address'
        },
        {
          title: 'Date',
          key: 'date'
        }
      ],
      //表单信息
      listData:{
      page:1,
      size:10,
      ....
      }
      //表格数据
      recordList: [],
      //用于后面存储后端返回的总数量
      exportTotal:0,
    }
  },

3.获取表格数据

1、接口请求

 mounted () {
    this.list()
  },
  methods: {
    list () {
    //page:当前页数,size:请求条数(后端要啥数据就传啥数据)
     let data = {page:1,size:20}
     //接口请求
        getRecordList(data).then((res) => {
          if (res.status === 200) {
            let recordList = res.data || []
            //解构
            let {total} = recordList
            //将total赋值(方便后面数据导出时使用)
            this.exportTotal=total
           
          } else {
          //接口请求失败
            this.$Message.error(res.msg)
          }
        })
      } 
   },
    showNum (data) {
      let showNum = ''
      switch (data) {
        case 'one':
          showNum = '数字一'
          break
        case 'two':
          showNum = '数字二'
          break
        case 'three':
          showNum = '数字三'
          break
        case 'four':
          showNum = '数字四'
          break
        default:
          showNum = 'ss'
      }
      return showNum
    }
  }
}

2、接口返回的数据结构

 //为了方便看看数据结构,造个假的吧😛接口数据结构如下
      this.recordList = {
        total: 8,
        page: 1,
        size: 10,
        rows: [
          {
            name: 'John Brown',
            age: 18,
            num: 'one',
            address: 'New York No. 1 Lake Park',
            date: '2016-10-03'
          },
          {
            name: 'Jim Green',
            age: 24,
            num: 'two',
            address: 'London No. 1 Lake Park',
            date: '2016-10-01'
          },
          {
            name: 'Joe Black',
            age: 30,
            num: 'three',
            address: 'Sydney No. 1 Lake Park',
            date: '2016-10-02'
          },
          {
            name: 'Jon Snow',
            age: 26,
            num: 'four',
            address: 'Ottawa No. 2 Lake Park',
            date: '2016-10-04'
          },
          {
            name: 'John Brown',
            age: 18,
            num: 'one',
            address: 'New York No. 1 Lake Park',
            date: '2016-10-03'
          },
          {
            name: 'Jim Green',
            age: 24,
            num: 'two',
            address: 'London No. 1 Lake Park',
            date: '2016-10-01'
          },
          {
            name: 'Joe Black',
            age: 30,
            num: 'three',
            address: 'Sydney No. 1 Lake Park',
            date: '2016-10-02'
          },
          {
            name: 'Jon Snow',
            age: 26,
            num: 'four',
            address: 'Ottawa No. 2 Lake Park',
            date: '2016-10-04'
          }
        ]
      }
    

4.导出

1、导出方法一,后端接收数据值时,可能存在限制,size过大时,接口挂了😂

// 导出
    tableExport () {
      // 导出所有信息
      //判断一下表格中是否有数据,有则请求接口获取数据,并导出;无数据则提示数据为空,导出失败
      if (this.exportTotal > 0) {
       //这里将表格数据的总数赋值size传给后端
        this.listData = {page:1,size:this.exportTotal}
      let data = JSON.parse(JSON.stringify(this.listData))
        //接口请求
        getRecordList(data).then((res) => {
          if (res.status === 200) {
            let exportList = res.data || []
            let {rows} = exportList
           //这一步是为了处理一下接口返回的数据
            rows.forEach((item) => {
              Object.assign(item, {
                num:this.showNum(item.num)
              })
            })
            //调用数据导出的方法并传入数据
            this.exportExcelFile(rows)
          } else {
            this.$Message.error(res.msg)
          }
        })
      } else {
        this.$Message.warning('数据为空,导出失败')
      }
    },
//数据导出成excel表格
exportExcelFile (excelData) {
      const w = [50, 133, 130, 130, 130] //excel的列宽
      const th = [
        'Name', 'Age', 'Num',  'Address', 'Date', 
     ]
      const filterVal = [
        'name',
        'age',
        'num',
        'address',
        'date',
      ]
      const data = excelData.map(v => filterVal.map(k => v[k]))
      const [fileName, fileType, sheetName] = ['列表', 'xlsx', '列表信息']
      toExcel({ th, data, fileName, fileType, sheetName, w })
    }

2、导出方法二,当方法一size过大时,那就只能多请求几次接口咯🉑

tableExport () {
      // 导出所有信息
      if (this.exportTotal > 0) {
        let data = JSON.parse(JSON.stringify(this.listData))
      //定义空数组存查询的数据
        let queryList = []
        const queryData = (exportPage) => {
          data.pageSize = 1000
          //判断有无exportPage重新赋值page
          if (exportPage) {
            data.page = exportPage
          }

           getRecordList(data.pageSize,data.page).then((res) => {
            this.loading = false
            if (res.status === 200) {
              let exportList = res.data || []
              let {rows, total} = exportList
              //这一步是为了处理一下接口返回的数据
            rows.forEach((item) => {
              Object.assign(item, {
                num:this.showNum(item.num)
              })
            })
              queryList = queryList.concat(rows)
              //当接口返回的total等于查询数据的长度时,✔调用数据的导出方法
              if (total === queryList.length) {
                this.exportExcelFile(queryList)
                this.$Message.info('导出成功')
              } else { //当接口返回的total不等于✘查询数据的长度时
               //那就只能page+1在调一次接口了
                let exportPage = exportList['page'] += 1
                queryData(exportPage)
              }
   
            } else {
              this.$Message.error(res.msg)
            }
          })
        }
        queryData()
      } else {
        this.$Message.warning('数据为空,导出失败')
      }
    },

总结

请求表格数据的接口和导出请求的是同一个接口,复制的时候记得改改接收接口返回数据的变量名,避免表格数据出现问题
数据量较少时,可采用第一种方法,数据量较多时,建议第二种

vue 纯前端导出 excel 表格 https://www.cnblogs.com/shenjp/p/11398232.html 在开发后台管理系统的时候,很多地方都要用到导出excel 表格,比如将table中的数据导出到本地,那么实现这种需求往往有两种方案: 一、后端开发一个下载链接,前端将这个链接放到 a 标签的 href 中,一点就能下载。   优点:对于前端来说实现简单,不用写过多的代码,也不依赖第三方库,兼容性好   缺点:如果前端操作数据更改了,需要发给后端才能导出 二、前端借助一些第三方库实现 下面以v.. 阅读详情

相关推荐

iView:上传excel并展示数据

ivew官网:点击进入 示例模板:点击进入 1.引入iview 在main.js中添加 import iView from 'iview' import 'iview/dist/styles/iview.css' Vue.use(iView) 2.excel.js 项目中新建excel.js /* eslint-disable */ import XLSX from 'xlsx'; func...

qq_34236316的博客 2795

vue+iView实现导入与导出excel功能

vue+iView实现导入与导出excel功能 一,需求: 1,导入导出的必要性 导入与导出在日常项目开发中经常用到, 批量导入功能可以快速插入添加数据。 导出功能则可方便直观明了拿到所需展示的重要数据。 2,xls和xlsx区别? 1、文件格式不同。 xls 是一个特有的二进制格式,其核心结bai构是复合文档类型的结构, 而 xlsx 的核心结构是 XML 类型的结构, 采用的是基于 XML 的压缩方式,使其占用的空间更小。 2、版本不同。 xls是excel2003及以前版本生成的文件格式, 而xl

weixin_44794123的博客 3058

我们整理出来的一些Excel导入导出方法,一个.CS文件

我们整理出来的一些Excel导入导出方法,一个.CS文件。

iview table数据直接导出_vue+iview中的table表格导出excel表格

一、iveiw框架中table中有exportCsv()方法可以导出.csv后缀文件,类似于excel文件,但是并不是excel文件。二、实现table表格导出excel文件利用Blob.js 和 Export2Excel.js两个文件实现1.Blob.js 和 Export2Excel.js文件链接:https://pan.baidu.com/s/1PvP-NxmONNh71SRDvlL_9A ...

weixin_39777497的博客 1046

Vue实现导出excel表格功能

引言: 最近使用vue在做一个后台系统,技术栈 vue + iView ,在页面中生成表格后, iView可以实现表格的导出,不过只能导出csv格式的,并不适合项目需求。 如果想要导出Excel 在src目录下创建一个文件(vendor)进入 Blob.js 和 Export2Excel.js npm install -S file-saver 用来生成文件的web应用程序 npm install -S xlsx 电子表格格式的解析器 npm install -D script-loader 将js挂在在全局下 表结构 渲染页面中的表结构是由 columns 列 和 table

Vue2.0实现将页面中表格数据导出excel的实例

这两天学习了Vue.js 感觉知识点挺多的,所以,今天添加一点小笔记。 项目中将后台返回的数据v-for到表格中,然后需要将这个表格导出为EXCEL 只说怎么做。 一、需要安装三个依赖: npm install -S file-saver xlsx npm install -D script-loader 二、项目中新建一个文件夹:(vendor—名字任取) 里面放置两个文件Blob.js和 Export2Excel.js。 Blob.js和 Export2Excel.js文件下载地址:Export2Exce_jb51.rar 三、在.vue文件中 写这两个方法:其中list是表格的

Vue+iview将表格table以excel文件导出的几种方式

前言 在日常工作中,若是经常跟后台管理系统打交道的朋友想必对导出excel表格这种需求肯定很熟悉吧。不过我也问了身边的一些岗位为后端工程师的朋友,他们说在公司的话一般导出excel表格的工作一般由后端来做,前端只需要调用接口即可。我的话,由前端导出或者后端导出的两种方式我都有做过,以此想记录一下,总结一下我是如何针对不同的方式将表格数据以excel的格式导出的。同时呢,若文章中有不足的地方,也欢迎大家的指正,相互学习~ 后端导出 如果你在工作中,导出excel表格这个工作主要放在后端的话,那么就会比较简单

Amelian的博客 6125

Python实战:5分钟搞定N-CMAPSS航空发动机数据集解析(附完整代码)

本文提供了一份针对N-CMAPSS航空发动机数据集的快速解析实战指南。通过Python的h5py和Pandas库,详细演示了如何高效读取HDF5格式文件、理解数据结构、提取关键特征(如传感器数据与剩余使用寿命RUL),并整合为可用于预测性维护分析的DataFrame,帮助研究者和工程师快速上手这一重要的工业时序数据集。

weixin_29083373的博客 278

Vue+iview实现自定义格式导出Excel文件

背景:项目中要实现一个导出Excel文件模板的功能,原来实现是通过后台生成然后前端请求下载,这样要消耗IO资源,然后看了一下之前项目的导出功能,发现原来Vue+iview可以实现本地数据导出,不过iview自带的方法只能导入CSV格式的文件,然后我是需要导出xlsx格式的文件,研究了一下,通过简单修改iview源码,可以实现自定义格式的文件,比如Excel,txt等,下面走起 1.先添加导出按钮 <Button type="primary" @click="exportData" &

xz842913787的博客 1679

MoveIt2项目想换掉KDL求解器?试试这个trac_ik插件(附源码编译避坑指南)

本文详细介绍了如何在MoveIt2项目中用trac_ik插件替代KDL求解器,提升机械臂运动学求解的效率和成功率。内容涵盖环境准备、源码编译避坑、项目集成及性能调优,特别适合需要高精度控制的协作机械臂应用场景。通过实测数据对比,trac_ik在求解时间和奇异点处理上显著优于传统KDL求解器。

weixin_30730053的博客 689

什么是PCIe Relaxed Ordering

什么是PCIe上的Relaxed Ordering呢?直接翻译的话就是宽松排序。在理解这个东西之前,需要先了解下什么是PCIe的基本事务排序法则。

qq_42824983的博客 1506

vue+iveiw表格选中数据导出excel表格

vue+iveiw表格选中项导出excel表格 ​ 因为业务的需求,表格类的数据需要我们前端方面进行导出数据转化成excel,前期Baidu碰壁,后来询问公司的大佬,结合他以前做过的东西,终于皇天不负有心人,导出excel Over!!! 一 、纯前端导出excel 表格导出需要的主要是两个依赖:(xlsx 和 file-saver) npm install --save xlsx file-saver 新建一个文件夹,或者在自己项目的工具文件夹里创建ExportExcel.js /* eslin

二九的博客 507

Mac电脑安装burp suite2024版本记录

下载最新版本burpsuitloader-XXX-all.jar,改名为burpsuitloader.jar。目录下,修改vmoptions.txt文件,新增以下内容,如果keygen不是这个名称的话,需要修改。,点击license左侧的copy复制它,然后手动从启动台启动burpsuite。,复制如下命令到终端即可(要加双引号,不然目录中空格会导致命令截断)再复制激活响应信息到burpsuite中即可激活。后续运行burp直接从启动台运行即可。将如下框的信息复制到激活器中。输入后下一步,点击手动激活。

墨痕诉清风的博客 899

Vue+iview---导出Excel功能的实现

背景   订餐系统前端使用的是vue框架,基于iview组件,对于一些查询性的数据具有导出Excel的功能。 方法介绍  1.整体介绍     2.正常导出功能(没有超过12位的数字)  2.1 导出按钮添加方法 &lt;Button type="primary" @click="exportData" style="float:right;margin-bottom:1...

愿历尽千帆,仍保持最初的热爱,奔赴每一场山海,一如既往鲜活而明亮~ 5962

6、核函数与再生核希尔伯特空间:原理、应用与实践

本文系统介绍了核函数与再生核希尔伯特空间(RKHS)的理论基础、核心性质及其在机器学习和信号处理中的广泛应用。文章从核方法的优势出发,阐述了其在非线性建模、正则化和算法核化方面的独特价值,并深入探讨了正定核、Mercer定理、表示定理等关键理论。通过构建多种标准核与工程专用核,展示了核函数的设计灵活性。结合支持向量回归(SVR)模型与多个MATLAB示例,详细说明了核方法的实际应用流程与操作技巧。最后,总结了核方法的应用领域、未来发展方向及学习实践建议,为读者提供了一套完整的理论与实践指南。

z2a3b4c5d的博客 142

Linux内核4.14版本——drm框架分析(1)——drm简介

本文介绍了DRM架构的发展历史、驱动框架以及简单示例,旨在帮助读者了解DRM架构的形成、功能流程实现。

phmatthaus的专栏 2549

Vue--表格导出excel(导出table表格所有数据)

还是继续前几天那个表格的需求,之前用纯前端做完了分页功能和筛选功能之后,我们再来完善一下一键导出Excel表格功能; 其实iview组件库的table部分也可以调用 exportCsv() 方法,可以将数据导出为 .csv 的表格文件,但是我们日常使用的是Excel .xlsx格式 的表格,因此仍需要用到插件来完成我们的需求。网上相关代码很多,但是目前这个是我见过最好理解方便的处理方式了。 一、 ...

weixin_44791115的博客 1万+

控制算法研发工程师(博士)职位深度解析与面试指南

摘要:广东万和新电气股份有限公司招聘控制算法研发工程师(博士),工作地点佛山顺德。职位要求2026届博士学历,电子信息工程或控制科学与工程专业。主要职责包括:1)燃气热水、热泵等系统的电控软件设计与优化;2)开发PID、模糊控制、ADRC、MPC等智能算法,应用于恒温控制、变频调节等场景。重点考察算法研发能力、系统稳定性优化及嵌入式实现经验。该职位提供三年资深工程师培养计划,需具备扎实的控制理论基础和工程实践能力,能够处理非线性系统、多工况自适应等复杂控制问题。

郑伟强dev的专栏 139

vue+iview中的table表格导出excel表格

vue+iview中的table表格导出excel表格 一、iveiw框架中table中有exportCsv()方法可以导出.csv后缀文件,类似于excel文件,但是并不是excel文件。 二、实现table表格导出excel文件利用Blob.js 和 Export2Excel.js两个文件实现   1.Blob.js 和 Export2Exce...

qq_35859392的博客 2141

YOLOv8融合HAttention:激活更多像素的注意力机制科研实践指南

HAttention通过层级化像素激活与融合的设计,为YOLOv8的像素级特征利用能力带来了质的飞跃。从原理理解到代码实现,再到集成调优,每一步都是科研中“解决像素信息遗漏难题”的具体实践。如果你在实验中发现某类细节或大尺度目标的检测仍有不足,可以尝试结合数据增强(如随机裁剪、多尺度训练)来强化模型对像素特征的学习能力。科研的价值在于不断挖掘技术的潜力,希望这份指南能真正帮你在目标检测的像素级特征利用领域找到新的突破点,祝你在科研探索中持续收获创新与成长。

FJN110的博客 105

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

在Vue里如何把数据导出到Excel ?

在Vue里如何把网页的数据导出到Excel ? 前言: 在做后台管理的时候,我们往往有需要把网页上面的数据导出到excel这样的需求,真实的企业项目里对应一些导出财务报表、员工信息、交易记录、考勤打卡记录…等等需求,本文将对此做探讨。 开始前补充: 网上是有些牛人已经把这个功能封装成组件了,但每个人的封装逻辑五花八门,组件的功能也很有限,不一定真能完全符合自己的业务需求,找相应的API也很麻烦,存在不太敢用,不会用等问题,那么本文将教你如何自己封装,如何自己自定义相关功能,如何自定义Excel的样式 ,尤其

weixin_46683455的博客 5842

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

vue+iview框架下导出Excel表格(改良版,可导出含有多个表的Excel文件)

vue+iview框架下导出Excel表格(改良版) 此小工具主要功能为将iview表格数据导出为Excel文件,并在之前的基础上可将多个表分页导出为一个Excel文件,如下图 下面是使用流程 首先先安装依赖 npm下 npm install -S file-saver xlsx npm install -D script-loader yarn下 yarn add file-saver ...

qq_43810251的博客 1836

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

vue iview table导出excel功能,支持多个sheet

需求:在iview-admin框架中写项目,遇到需要导出excel,并导出多个sheet 分析:iview 中table现有的导出Csv不符合要求,需要另外找相关插件 结果:用xlsx gitHub:https://github.com/SheetJS/sheetjs 步骤:1、安装:npm install --save xlsx 2、方法:页面引入 importXLSXfrom'...

heerey525 1420
上一篇: JSON数据转EXCEL
下一篇: 解决iView表单自定义输入框的校验信息,数据校验时输入框一直loading中
小小布灵鸟
博客等级 码龄9年 8粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值