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

Trae CN 使用入门指南

【代码】Trae CN 使用入门指南。

weixin_42551921的博客 8761

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

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

xz842913787的博客 1679

从STM32F411到华大HC32F460:一个真实项目移植的踩坑与填坑全记录

本文详细记录了从STM32F411移植到华大HC32F460芯片的全过程,包括开发环境搭建、时钟树配置、中断处理、外设驱动、看门狗陷阱、Flash操作和低功耗设计等关键坑点及解决方案。特别针对HC32F460的200MHz主频、双PLL架构和HSRUN模式等特性进行了深入分析,为工程师提供实用的移植指南,帮助节省大量调试时间。

weixin_33691817的博客 418

Avalonia v11实战:手把手教你从零创建第一个跨平台桌面App(含设计器不显示的解决方案)

本文详细介绍了如何使用Avalonia v11从零开始创建跨平台桌面应用,包括环境准备、项目创建、界面设计及常见问题解决方案。特别针对设计器不显示等常见问题提供了实用解决方法,帮助.NET开发者快速掌握这一强大的UI框架,实现Windows、macOS和Linux多平台应用开发。

weixin_30417487的博客 163

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

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

二九的博客 507

Vmware虚拟机克隆详解:固定ip + 修改uuid等内容

分两大步 设置固定ip 克隆后修改相关配置 本文引用的其他地方的图片。会附上链接 若侵权,删 一、设置静态ip 先进行虚拟网络的编辑 接下来的操作需要管理员权限。(给权限就完事了) 接下来设置网卡: 网络和共享中心→ 更改适配器设置→VMware Network Adapter VMnet8 -> 右键属性 修改TCP/Ipv4的配置,网上常见是这种,笔者是英文的...

Unknownfuture的博客 9070

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

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

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

VM与欧姆龙PLC通讯设置:Fins TCP/UDP协议实战避坑指南

本文详细解析了VM视觉平台与欧姆龙PLC通过Fins TCP/UDP协议进行通讯的实战配置与避坑要点。文章对比了Fins TCP与Fins UDP的差异,推荐在多数工业控制场景下优先选用Fins TCP以保证可靠性,并深入讲解了网络设置、寄存器地址映射、轮询优化等核心配置步骤。同时,针对常见的多次触发拍照、数据解析错误等问题提供了具体的解决方案和调试技巧,旨在帮助工程师快速建立稳定高效的通讯连接。

e4f5g6h7的博客 594

AXI4协议之AXI4-Lite接口详解及实战

本文首先对AXI4总线协议进行了一个简单的介绍,然后使用vivado提供的模板创建了一个AXI4-Lite Master的接口,并生成了一个具有Master和Slave的代码实例,阅读该示例代码,进行修改后用于自己的项目。

高阶近似的博客 2万+

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

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

weixin_44791115的博客 1万+

【自监督学习完整教程】第 1 章:初识自监督学习

摘要: 自监督学习(SSL)是一种利用无标签数据自动生成伪标签进行模型训练的方法,有效降低了人工标注成本。本文对比了监督学习、无监督学习和SSL的差异,重点阐述了SSL通过设计PretextTasks(如图像旋转预测)从数据中提取深层特征的原理。实践部分以PyTorch实现图像旋转预测任务为例,展示了SSL的训练流程。实验表明,SSL能够学习通用视觉特征,适用于计算机视觉、自然语言处理等领域,尤其在标注数据稀缺的场景中表现优异。

u012133341的博客 259

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

Ubuntu 部署 Ollama 避坑指南:下载失败 / 服务崩溃?一招解决所有问题!

本文详细介绍了在Ubuntu系统上安装Ollama大模型工具的完整流程和常见问题解决方案。主要内容包括:环境检查(系统版本、架构、依赖)、一键安装步骤、端口配置和服务启动等核心操作。重点针对下载失败、服务启动异常、权限不足等高频问题,提供了国内镜像配置、手动创建服务文件、用户组添加等实用解决方案。最后通过测试Qwen2.5轻量模型验证安装效果,并给出低配设备选型建议。全文提供可复制的命令行操作,帮助用户快速搭建离线可用的大模型环境。

2501_93651177的博客 1008

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

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

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

weixin_46683455的博客 5842

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

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

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

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、付费专栏及课程。

余额充值