前端三种输入数据来源生成 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文件。

🫱官方网址,一键跳转

相关推荐
ch.ju14 小时前
Java Programming Chapter 4——Construction method
java·开发语言
烤代码的吐司君14 小时前
面向对象编程(OOP)在 Python 中的实现——类、继承与特殊方法
开发语言·python
Hilaku14 小时前
如何实现 0 毫秒无感页面跳转?聊聊被低估的 Speculation Rules API
前端·javascript·程序员
AI行业学习14 小时前
CC-Switch Windows + macOS 下载安装配置全流程
java·开发语言·人工智能·python
旧曲重听114 小时前
我的Vibe Coding一周记…
前端·人工智能·程序人生·面试
北风toto14 小时前
原生html中input标签oninput处理器使用
前端
Lumbrologist14 小时前
【C++】零基础入门 · 第 3 节:条件判断(if、switch)
开发语言·c++·算法
l1t14 小时前
DeepSeek总结的使用实体-组件-系统和基于存在性处理进行Python编程简介
开发语言·python
zhangxingchao14 小时前
AI 大模型核心四:工程体系化思维
前端·人工智能·后端