elementUI做好的表格分页,分页是后台处理好的直接通过接口传过来的,现需求是让前端直接导出所有的数据,我该怎么做?

新手上路,请多包涵

如图:
image
image

现在有31条数据 分两页展示 页面上还有一个导出报表的按钮 点击按钮的时候期望把31条数据都导出到Excel表格里面 但是现在我只能导出一页的数据(也就是20条) 请问大佬们有什么办法没有
PS:现阶段只希望前端处理

阅读 6.3k
9 个回答

首先来说这种想法很危险,也不合理,但是也有处理方法
比如:点击导出按钮后,从第一页开始循环拉数据,依次拿到对应的数据后进行整合,然后处理成excel

这并不是一个好的选择 你可以选择把所有的数据全部请求回来 然后导出 不然拿不到所有数据 前端导出的话可能要先渲染然后获取整个dom才能导出 这样会很卡 很慢 相比之下花费这么长的时间 后台早就做完了 给你返回一个地址你直接下载就行了

我之前用的插件,count设置的很大,渲染的是一个隐藏的table,不影响展示的table,不过这样数据多了就不适合了
后来还是以后端生成的二进制,前端转化成表格导出的额

因为是做了分页,只能取到指定条数的数据。
如果是操作所有数据,我们的做法是跟后端协商,点导出的时候指定个mark,通过这个mark让后端返回所有数据的excel给你。

分页是分页,导出是导出,让后端做。

我的做法是,导出当前是前端做,导出所有是后端做. 导出所有甚至会出现文件非常大,导出消耗极大,专门由服务器来异步跑导出服务.

导出功能跟表格分页没有必然关系。

导出功能其实就是文件下载功能,需要后端把全量数据流转换成excel格式,然后有两种方式下载:

  • 直接把 excel 数据流通过接口给到前端,前端通过设置 responseType: 'blob' 却接收。然后通过 adownload 属性下载(a 标签的形式,兼容性不太好);或者是通过插件下载,推荐使用 download.js
  • 后端把 excel 数据流保存在文件服务器,然后设置可下载的头属性,给到前端文件地址,然后前端直接 window.open(<文件地址>)

如果可以用第二种方式去下载,尽量用第二种,兼容性最好

pageSize 设置很大,pageNum为1 请求数据~

如果你想前端生成,再发一个请求去获取全部数据就好了。但不建议前端生成,前端对于这种操作局限比较大,有可能做着做着发现一大堆坑

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题