前端三种输入数据来源生成 worksheet(工作表)新手适用详细篇【SheetJS】

目录

概览

方法 输入数据 适合场景 数据结构
aoa_to_sheet 数组的数组 已经是二维表格数据 [['姓名','年龄'],['张三',18]]
json_to_sheet 对象数组 后端接口 / JSON 数据 [{name:'张三',age:18}]
table_to_sheet HTML <table> DOM 页面已有表格 <table>...</table>

功能差异

aoa_to_sheet

处理二维数组数据,数组的每个子数组对应工作表的行,子数组元素对应单元格值。适合结构化数据直接转换。

json_to_sheet

处理对象数组,每个对象对应一行,对象属性名作为表头,属性值填充单元格。适合API返回的JSON数据转换。

table_to_sheet

解析DOM中的<table>元素 ,自动提取<tr>和<td>生成工作表。适合从HTML页面直接提取表格数据。

使用场景

aoa_to_sheet

  • Excel 原始二维数据
  • 需要完全控制行列
  • 自定义表头
javascript 复制代码
const data = [
  ['姓名', '年龄'],
  ['张三', 18],
  ['李四', 20]
];

const ws = XLSX.utils.aoa_to_sheet(data);

生成效果:

A B
姓名 年龄
张三 18
李四 20
javascript 复制代码
const data = [
  ["Name", "Age", "Role"],
  ["Alice", 28, "Engineer"],
  ["Bob", 32, "Designer"]
];
const ws = XLSX.utils.aoa_to_sheet(data);

json_to_sheet

  • REST API返回的JSON响应
  • 数据库查询结果(如MongoDB文档)
  • 需要自动生成表头的场景
javascript 复制代码
const data = [
  { name: '张三', age: 18 },
  { name: '李四', age: 20 }
];

const ws = XLSX.utils.json_to_sheet(data);

生成效果:

name age
张三 18
李四 20

table_to_sheet

  • 页面已经渲染了 HTML table
  • 直接导出网页表格
  • 不想重新组织数据
html 复制代码
<table id="demo">
  <tr>
    <th>姓名</th>
    <th>年龄</th>
  </tr>
  <tr>
    <td>张三</td>
    <td>18</td>
  </tr>
</table>
javascript 复制代码
const table = document.getElementById('demo');
const ws = XLSX.utils.table_to_sheet(table);

table_to_sheet一些options属性

是否读取整个table

javascript 复制代码
table_to_sheet(table)

是否跳过隐藏元素

默认的话。隐藏列会导出

javascript 复制代码
table_to_sheet(table, {
  display: true
})

是否指定原始值

raw: true->保持原值,数字还是数字

javascript 复制代码
table_to_sheet(table, {
  raw: true
})

sheetRows

只读取前10行数据

javascript 复制代码
XLSX.utils.table_to_sheet(table, {
  sheetRows: 10
})

cellDates

日期存成 Date 类型

javascript 复制代码
XLSX.utils.table_to_sheet(table, {
  cellDates: true
})

高级用法

混合使用场景

当JSON数据需要特殊处理时:

javascript 复制代码
const jsonData = [{x:1, y:2}, {x:3, y:4}];
const aoaData = jsonData.map(item => [item.x, item.y]);
const ws = XLSX.utils.aoa_to_sheet([["X", "Y"], ...aoaData]);

DOM表格增强

处理复杂表格结构:

javascript 复制代码
const ws = XLSX.utils.table_to_sheet(table, {
  raw: true,  // 保留原始HTML内容
  dateNF: "YYYY-MM-DD"  // 自定义日期格式
});

所有方法最终都生成相同格式的工作表对象,可配合XLSX.writeFile导出为Excel文件。

🫱官方网址,一键跳转

相关推荐
对空六课2 小时前
两个统计平台数据不同:用同一时间窗和事件样本做差异定位
大数据·前端·网络·数据库
白帽攻防录9 小时前
SRC 挖洞:PostScript 打印机驱动双 RCE,打印服务器怎么变成内网跳板
开发语言·网络安全·php·内网安全
十年Java程序媛10 小时前
Java枚举Enum完整教程|替代静态常量,开发与面试要点
java·开发语言·spring boot·后端·面试
2603_9651481110 小时前
电商选品调研:通过关键词搜索API获取市场热销商品,结合商品详情API分析竞品卖点与定价
开发语言·数据库·人工智能·python·信息可视化
lpfasd12310 小时前
node-sass 停止维护!老项目迁移 Dart Sass 完整教程
前端·rust·sass
xixiaoyunya11 小时前
Python 异步编程入门:用 asyncio 轻松实现并发任务
开发语言·python·php
学逆向的11 小时前
C 循环结构的执行效率分析
c语言·开发语言·数据结构·网络安全
小坏讲微服务12 小时前
刚发布一个月的JDK 27,为什么我建议你立刻升级?
java·开发语言·spring boot·spring·架构·求职招聘·springboot4
Data analyse45613 小时前
rnweb 回放数据量太大怎么办?分片存储与断点续传的实现思路
前端·网络·算法·数据分析
xiaogai_gai13 小时前
金蝶收料通知单查询策略实战教程:从源系统拉取到中间层落地的完整路径
java·前端·数据库