table 表格转成 excell 导出

OK,功能非常简单,但是很实用啊!

依赖安装

这里我们需要安装两个依赖: xlsx 和 file-saver,就可以帮助我们实现功能了!

js 复制代码
 npm i xlsx file-saver

代码参考

导出方法
utils/index.js

js 复制代码
import * as XLSX from 'xlsx'
import FileSaver from 'file-saver'

export const exportExcel = (el, name) => {
  // 根据 table 生成一个工作表
  const worksheet = XLSX.utils.table_to_sheet(el)
  // 创建一个空工作簿
  const workbook = XLSX.utils.book_new()
  // 将工作表附加到工作簿
  XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1', true)
  // 写入工作簿并返回文件   bookType(导出文件的文件格式)  type (返回值类型)
  const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' })
  const data = new Blob([excelBuffer], { type: 'application/octet-stream' })
  FileSaver.saveAs(data, name + '.xlsx')
}

注意:

以下是低版本导入方法,最新版本获取 XLSX 为 undefined,建议统一按上述导入。

js 复制代码
import XLSX from 'xlsx'

index.vue

js 复制代码
<template>
	<div class="table">
		<el-table ref="elTab"></el-table>
	</div>
</template>

<script>
import { exportExcel } from "@utils/index.js"
export default {
	methods: {
		export() {
			exportExcel(this.refs.elTab.$el, "xxx");
		},
	}
}
</script>

效果展示

el-table 表格

excell 表格

题外话

在这里做一个提醒!!!

如果你用了 Element 的 table 组件,并且做了某一列固定,那么这时候导出会出现一个数据重复bug:导出的 excell 中包含重复的表格数据。

正常表格是行排列组成的表格,而使用了 fixed 属性的表格,里面多了列排列组成的表格,就相当于一个 table 中包含了两组表格数据,所以导出就会出现两组相同的数据。

解决:

js 复制代码
export() {
	// 手动获取其中一组表格数据		el-table__fixed 是列组合数据
	let el = document.querySelector(".el-table__fixed")
	exportExcel(el, "xxx");
},
相关推荐
掘金者阿豪3 分钟前
集中式与分布式数据库怎么选?从架构原理到电科金仓的实践思考
前端·后端
墨林陌27 分钟前
AI 热点日报(2026-11-06):乌镇峰会闭幕发布全球开源AI倡议,腾讯混元Hy4发布即开源
前端
用户298698530141 小时前
React 前端将 Excel 工作表导出为图片的技术实践
javascript·react.js·excel
亿元程序员1 小时前
8年游戏主程从公司毕业了,能干些啥?
前端
Cosolar1 小时前
极简智库(MiniDocs):docsify、VitePress、Notion 等知识库搭建服务的完美替代
前端·后端·架构
涛涛ing1 小时前
那些“每个决定都正确”的项目,最后是怎么烂掉的
前端
徐小夕2 小时前
万字长文!DeepSeek Super-agent × 企业知识库架构深度拆解与落地实践
前端·vue.js·github
陈随易2 小时前
TanStarter,从搭建到支付,一步到位开始赚美元
前端·后端·程序员
前端双越老师3 小时前
程序员 1v1 访谈系列第十二期:普通人没有核心竞争力
前端·ai编程·全栈
柳杉3 小时前
没有写一行代码:我用 Codex 制作 了一个 3D 智慧展厅可视化大屏
前端·ai编程·three.js