前端导出table数据实现(支持多级表头)

tableToExcel 方法文档

简介

[tableToExcel](file:///f:/code/my-vue2.0-project/src/utils/tableToExcel.js#L42-L42) 是一个用于将前端表格数据导出为 Excel 文件的工具函数。它支持单级表头和多级表头(嵌套表头),并提供了多种自定义选项,如边框样式、列宽自动调整和文本换行等。

功能特性

  • 支持单级表头和多级表头导出
  • 自动计算并设置列宽
  • 支持添加单元格边框
  • 支持文本换行显示
  • 支持单元格水平和垂直居中对齐
  • 支持复杂表头的合并单元格处理

使用方法

导入

import {
   
    tableToExcel } from '@/utils/tableToExcel.js'

基本用法

// 基本数据导出
const tableData = [
  {
   
    name: '张三', age: 25, address: '北京市' },
  {
   
    name: '李四', age: 30, address: '上海市' }
];

const columns = [
  {
   
    prop: 'name', label: '姓名' },
  {
   
    prop: 'age', label: '年龄' },
  {
   
    prop: 'address', label: '地址' }
];

tableToExcel(tableData, columns, '用户数据.xlsx');

多级表头用法

// 多级表头导出
const tableData = [
  {
   
    name: '张三', age: 25, phone: '13800138000', email: 'zhangsan@example.com' },
  {
   
    name: '李四', age: 30, phone: '13900139000', email: 'lisi@example.com' }
];

const columns = [
  {
   
    prop: 'name', label: '姓名' },
  {
   
   
    label: '联系信息',
    children: [
      {
   
    prop: 'phone', label: '电话' },
      {
   
    prop: 'email', label: '邮箱' }
    ]
  },
  {
   
    prop: 'age', label: '年龄' }
];

tableToExcel(tableData, columns, '用户详细数据.xlsx');

参数说明

参数名 类型 必填 默认值 说明
tableData Array - 表格数据数组
columns Array - 列配置信息
filename String ‘data.xlsx’ 导出的文件名
options Object - 导出选项

columns 配置项

columns 参数是一个数组,每个元素代表一列的配置信息:

单级表头配置
{
   
   
  prop: 'name',      // 对应数据中的字段名
  label: '姓名'      // 表头显示的文本
}
多级表头配置
{
   
   
  label: '分组名称',   // 分组表头显示的文本
  children: [        // 子列配置
    {
   
    prop: 'phone', label: '电话' },
    {
   
    prop: 'email', label: '邮箱' }
  ]
}

options 配置项

属性 类型 默认值 说明
addBorder Boolean true 是否为单元格添加边框
autoWidth Boolean true 是否自动调整列宽
wrapText Boolean true 是否允许文本换行

使用示例

1. 基础导出

const tableData = [
  {
   
    id: 1, name: '产品A', price: 100 },
  {
   
    id: 2, name: '产品B', price: 200 }
];

const columns = [
  {
   
    prop: 'id', label: 'ID' },
  {
   
    prop: 'name', label: '产品名称' },
  {
   
    prop: 'price', label: '价格' }
];

tableToExcel(tableData, columns, '产品清单.xlsx');

2. 自定义选项导出

const tableData = [
  {
   
    name: '张三', desc: '这是一段很长的描述文本\n包含换行符' }
];

const columns = [
  {
   
    prop: 'name', label: '姓名' },
  
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈善强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值