一键导出antD Table(简单)
所需依赖:
- antdv
$ npm install ant-design-vue@4.x --save
ExcelJS
$ npm install exceljs --save
file-saver
$ npm install file-saver --save
demo.vue:
<template> <a-table ref='table' :columns='columns' :dataSource='dataSource' /> <a-button @click="exportExl('文件名', columns, dataSource)">导出</a-button> </template> <script> import { exportExl } from './exportExl.js' export default { name: 'demo', data() { return { columns: [ { title: '姓名', dataIndex: 'name', key: 'name', }, { title: '年龄', dataIndex: 'age', key: 'age', }, { title: '住址', dataIndex: 'address', key: 'address', }, ], dataSource: [ { key: '1', name: '胡彦斌', age: 32, address: '西湖区湖底公园1号', }, { key: '2', name: '胡彦祖', age: 42, address: '西湖区湖底公园1号', }, ], } }, methods: { exportExl(fileName, columns, dataSource) { exportExl(fileName, columns, dataSource) } } } </script>
exportExl.js
// 导出Excel import * as ExcelJS from 'exceljs' import saveAs from 'file-saver' /** * antD table 前端导出 */ export function exportExl(fileName, columns, dataSource) { // 创建工作簿 const workbook = new ExcelJS.Workbook(); const worksheet = workbook.addWorksheet('Sheet1') // 渲染表头 worksheet.columns = generateHeaders(columns); // 改表头颜色 // handleHeader(worksheet) // 渲染数据 handleDatWithRender(worksheet, columns, dataSource) saveWorkbook(workbook, `${fileName}.xlsx`) } export function generateHeaders(columns) { return columns.map(col => { const obi = { header: col.title, key: col.dataIndex } return obj }) } export function handleHeader(worksheet) { } export function handleDatWithRender(worksheet, columns, dataSource) { const rowsData = dataSource.map(data => { return columns.map(col => { return data[col.dataIndex] }) }) // 添加行 worksheet.addRows(rowsData) } export function saveWorkbook(workbook, fileName) { workbook.xlsx.writeBuffer().then(data => { const exlBlob = new Blob([data], { type: '' }) saveAs(exlBlob, fileName) }) }
参考https://juejin.cn/post/7071882317953761316/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通