【在前端不用接口直接导出.xlsx文件】

一:

注意:ref="table"

javascript 复制代码
          <el-button type="primary" icon="el-icon-download" @click="exportExcel">导出Excel</el-button>

         <el-table :data="codeData" border ref="table">
            <el-table-column label="数据实体" prop="dataName" align="center"/>
            <el-table-column label="更新时间" prop="updateTime" align="center"/>
          </el-table>

二:引入方法:

javascript 复制代码
import { deleteCol } from '@/utils/excel'

三:methods:

javascript 复制代码
    exportExcel() {
      const workbook = this.$xlsx.utils.table_to_book(this.$refs.table.$el, { raw: true })
      deleteCol(workbook.Sheets[workbook.SheetNames[0]], 8)
      return this.$xlsx.writeFile(workbook, 'download.xlsx')
    },

四:引入的文件内容:

/utils/excel

javascript 复制代码
import * as xlsx from 'xlsx'

function encodeCell(r, c) {
  return xlsx.utils.encode_cell({ r, c })
}

export function deleteRow(ws, index) {
  const range = xlsx.utils.decode_range(ws['!ref'])
  for (let row = index; row < range.e.r; row++) {
    for (let col = range.s.c; col <= range.e.c; col++) {
      ws[encodeCell(row, col)] = ws[encodeCell(row + 1, col)]
    }
  }
  range.e.r--
  ws['!ref'] = xlsx.utils.encode_range(range.s, range.e)
}

export function deleteCol(ws, index) {
  const range = xlsx.utils.decode_range(ws['!ref'])
  for (let col = index; col < range.e.c; col++) {
    for (let row = range.s.r; row <= range.e.r; row++) {
      ws[encodeCell(row, col)] = ws[encodeCell(row, col + 1)]
    }
  }
  range.e.c--
  ws['!ref'] = xlsx.utils.encode_range(range.s, range.e)
}

export function exportExcelFile(array, sheetName = '表1', fileName = 'example.xlsx') {
  let jsonWorkSheet = xlsx.utils.json_to_sheet(array)
  let workBook = xlsx.utils.book_new()
  workBook = {
    SheetNames: [sheetName],
    Sheets: {
      [sheetName]: jsonWorkSheet,
    },
  }
  return xlsx.writeFile(workBook, fileName)
}
相关推荐
Highcharts.js4 小时前
Highcharts 云端渲染的真相:交互式图表与服务器端生成的边界
前端·信息可视化·服务器渲染·highcharts·图表渲染
zhuyan1084 小时前
Linux 系统磁盘爆满导致无法启动修复指南
前端·chrome
编程牛马姐5 小时前
独立站SEO流量增长:提高Google排名的优化方法
前端·javascript·网络
NotFound4865 小时前
实战指南如何实现Java Web 拦截机制:Filter 与 Interceptor 深度分享
java·开发语言·前端
Dontla6 小时前
高基数(High Cardinality)问题介绍(Prometheus、高基数字段、低基数字段)
前端·数据库·prometheus
whuhewei8 小时前
为什么客户端不存在跨域问题
前端·安全
妮妮喔妮8 小时前
supabase的webhook报错
开发语言·前端·javascript
yivifu9 小时前
手搓HTML双行夹批效果
前端·html·html双行夹注
奔跑的卡卡9 小时前
Web开发与AI融合-第一篇:Web开发与AI融合的时代序幕
前端·人工智能
IT_陈寒9 小时前
Redis批量删除的大坑,差点让我加班到天亮
前端·人工智能·后端