xlsx.utils.json_to_sheet函数详解

xlsx.utils.json_to_sheetxlsx 库中的一个实用函数,用于将 JSON 数据转换为 Excel 工作表对象。这个函数非常有用,尤其是在你需要从数据库或其他数据源获取数据并将其导出到 Excel 文件时。

函数签名

XLSX.utils.json_to_sheet(data, opts)
  • data:一个包含对象的数组,每个对象代表一行数据。
  • opts:可选参数对象,用于配置生成的工作表的行为。

参数详解

  • data:这是一个数组,其中每个元素都是一个对象。对象的键名将作为列标题,值将作为单元格内容。例如:

    const data = [{ name: 'John', age: 30, city: 'New York' },{ name: 'Anna', age: 25, city: 'London' },{ name: 'Mike', age: 32, city: 'San Francisco' }
    ];
    
  • opts:这是一个可选的对象,可以包含以下属性:

    • header:指定工作表的第一行(列标题)。默认情况下,它会使用对象的键名作为列标题。你可以通过传递一个数组来自定义列标题顺序或名称。
    • skipHeader:如果设置为 true,则不会在生成的工作表中包含列标题行。默认是 false
    • cellDates:如果设置为 true,则日期类型的数据会被处理为 Excel 的日期格式。默认是 false
    • dateNF:自定义日期格式字符串。
    • nullError:如果设置为 true,则空值会被处理为错误单元格。默认是 false

示例代码

下面是一个完整的示例,展示如何使用 json_to_sheet 将 JSON 数据转换为 Excel 工作表,并将其保存为 Excel 文件。

1. 安装依赖

确保你已经安装了 xlsx 库:

npm install xlsx
2. 编写脚本

创建一个名为 excel_writer.js 的文件,并添加以下代码:

const XLSX = require('xlsx');// 示例数据
const data = [{ name: 'John', age: 30, city: 'New York' },{ name: 'Anna', age: 25, city: 'London' },{ name: 'Mike', age: 32, city: 'San Francisco' }
];// 将JSON数据转换为Excel工作表
function jsonToExcel(data, filePath) {// 创建一个新的工作簿const workbook = XLSX.utils.book_new();// 将数据转换为工作表const worksheet = XLSX.utils.json_to_sheet(data);// 将工作表添加到工作簿XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');// 将工作簿保存为Excel文件XLSX.writeFile(workbook, filePath);console.log(`Data has been written to ${filePath}`);
}// 调用函数并传入数据和输出路径
jsonToExcel(data, './output.xlsx');
3. 运行脚本

在终端中运行以下命令来执行脚本:

node excel_writer.js

运行后,你会在项目目录下找到一个名为 output.xlsx 的 Excel 文件,里面包含了你的 JSON 数据。

自定义列标题

有时你可能希望自定义列标题,而不是直接使用对象的键名。你可以通过 header 选项来实现这一点。

const XLSX = require('xlsx');// 示例数据
const data = [{ name: 'John', age: 30, city: 'New York' },{ name: 'Anna', age: 25, city: 'London' },{ name: 'Mike', age: 32, city: 'San Francisco' }
];// 将JSON数据转换为Excel工作表,并自定义列标题
function jsonToExcelWithCustomHeaders(data, filePath) {// 创建一个新的工作簿const workbook = XLSX.utils.book_new();// 自定义列标题const customHeaders = ['Full Name', 'Age', 'Location'];// 将数据转换为工作表,并指定自定义列标题const worksheet = XLSX.utils.json_to_sheet(data, { header: ['name', 'age', 'city'] });// 手动修改第一行(列标题)for (let i = 0; i < customHeaders.length; i++) {const cellAddress = XLSX.utils.encode_cell({ c: i, r: 0 });worksheet[cellAddress].v = customHeaders[i];}// 将工作表添加到工作簿XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');// 将工作簿保存为Excel文件XLSX.writeFile(workbook, filePath);console.log(`Data has been written to ${filePath}`);
}// 调用函数并传入数据和输出路径
jsonToExcelWithCustomHeaders(data, './output_custom_headers.xlsx');

跳过列标题

如果你不想在生成的 Excel 文件中包含列标题,可以通过设置 skipHeader 选项来跳过它们。

const XLSX = require('xlsx');// 示例数据
const data = [{ name: 'John', age: 30, city: 'New York' },{ name: 'Anna', age: 25, city: 'London' },{ name: 'Mike', age: 32, city: 'San Francisco' }
];// 将JSON数据转换为Excel工作表,并跳过列标题
function jsonToExcelSkipHeaders(data, filePath) {// 创建一个新的工作簿const workbook = XLSX.utils.book_new();// 将数据转换为工作表,并跳过列标题const worksheet = XLSX.utils.json_to_sheet(data, { skipHeader: true });// 将工作表添加到工作簿XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');// 将工作簿保存为Excel文件XLSX.writeFile(workbook, filePath);console.log(`Data has been written to ${filePath}`);
}// 调用函数并传入数据和输出路径
jsonToExcelSkipHeaders(data, './output_skip_headers.xlsx');

处理日期类型数据

如果你的数据中包含日期类型字段,可以通过设置 cellDates 选项来正确处理这些字段。

const XLSX = require('xlsx');// 示例数据,包含日期类型字段
const data = [{ name: 'John', dob: new Date('1991-03-17'), city: 'New York' },{ name: 'Anna', dob: new Date('1996-08-15'), city: 'London' },{ name: 'Mike', dob: new Date('1990-05-20'), city: 'San Francisco' }
];// 将JSON数据转换为Excel工作表,并正确处理日期类型
function jsonToExcelWithDate(data, filePath) {// 创建一个新的工作簿const workbook = XLSX.utils.book_new();// 将数据转换为工作表,并正确处理日期类型const worksheet = XLSX.utils.json_to_sheet(data, { cellDates: true });// 将工作表添加到工作簿XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');// 将工作簿保存为Excel文件XLSX.writeFile(workbook, filePath);console.log(`Data has been written to ${filePath}`);
}// 调用函数并传入数据和输出路径
jsonToExcelWithDate(data, './output_with_dates.xlsx');

总结

通过 xlsx.utils.json_to_sheet 函数,我们可以轻松地将 JSON 数据转换为 Excel 工作表,并进一步将其保存为 Excel 文件。这个函数提供了丰富的配置选项,使得我们可以根据实际需求灵活调整生成的工作表。

希望这篇文章能帮助你更好地理解和使用 xlsx 库中的 json_to_sheet 函数。如果你有任何问题或需要进一步的帮助,请随时提问!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/73899.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025-03-17 学习记录--C/C++-PTA 习题4-7 最大公约数和最小公倍数

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 习题4-7 最大公约数和最小公倍数 本题要求两个给定正整数的最大公约数和最小公倍数。 输入格式: 输入在一…

【源码阅读】多个函数抽象为类(实现各种类型文件转为PDF)

目录 一、原始函数二、类三、转换过程 一、原始函数 最开始就是写了几个函数&#xff08;包括doc、excel、ppt类型的文件&#xff09;转换为pdf&#xff0c;需要将这些函数形成一个类。相似的一类函数就可以组成一个实现特定功能的类 import subprocess import pandas as pd i…

VSCode扩展工具Copilot MCP使用教程【MCP】

MCP&#xff08;Model Context Protocol&#xff0c;模型上下文协议&#xff09; &#xff0c;2024年11月底&#xff0c;由 Anthropic 推出的一种开放标准&#xff0c;旨在统一大型语言模型&#xff08;LLM&#xff09;与外部数据源和工具之间的通信协议。本文章教你使用VSCode…

【leetcode100】搜索插入位置

1、题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2…

【小白向】Word|Word怎么给公式标号、调整公式字体和花括号对齐

【小白向】Word&#xff5c;Word怎么给公式标号、调整公式字体和花括号对齐 我的版本&#xff1a;Word 2021 如需快速查看关键步骤&#xff0c;请直接阅读标红部分。 如果遇到无法调整的情况&#xff0c;可以直接下载我的示例文档进行参考&#xff1a;花括号和其他的示例公式.…

【算法day15】最接近的三数之和

最接近的三数之和 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数&#xff0c;使它们的和与 target 最接近。 这里是引用 返回这三个数的和。 假定每组输入只存在恰好一个解。 https://leetcode.cn/problems/3sum-closest/submissions/61…

Blender-MCP服务源码5-BlenderSocket插件安装

Blender-MCP服务源码5-BlenderSocket插件安装 上一篇讲述了Blender是基于Socket进行本地和远程进行通讯&#xff0c;现在尝试将BlenderSocket插件安装到Blender中进行功能调试 1-核心知识点 将开发的BlenderSocket插件安装到Blender中 2-思路整理 1&#xff09;将SocketServe…

【MySQL数据库】存储过程与自定义函数(含: SQL变量、分支语句、循环语句 和 游标、异常处理 等内容)

存储过程&#xff1a;一组预编译的SQL语句和流程控制语句&#xff0c;被命名并存储在数据库中。存储过程可以用来封装复杂的数据库操作逻辑&#xff0c;并在需要时进行调用。 类似的操作还有&#xff1a;自定义函数、.sql文件导入。 我们先从熟悉的函数开始说起&#xff1a; …

ASP3605抗辐照加固同步降压调节器——商业航天电源芯片解决方案新选择

ASP3605企业宇航级型号ASP3605S2U通过SEU≥75 MeVcm/mg与SEL≥75 MeVcm/mg抗辐射测试。其输入电压4V至15V&#xff0c;输出电流5A&#xff0c;支持多相级联与冗余设计&#xff0c;适用于卫星、航天器电源系统。 面向航天场景的核心功能设计 1. 抗辐射与可靠性保障 单粒子效应…

使用fastapi部署stable diffusion模型

使用vscode运行stable diffusion模型&#xff0c;每次加载模型都需要10分钟&#xff0c;为算法及prompt调试带来了极大麻烦。使用jupyter解决自然是一个比较好的方案&#xff0c;但如果jupyter由于种种原因不能使用时&#xff0c;fastapi无疑成为了一个很好的选择。 参考github…

2025-03-16 学习记录--C/C++-PTA 习题4-4 特殊a串数列求和

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 习题4-4 特殊a串数列求和 给定两个均不超过9的正整数a和n&#xff0c;要求编写程序求aaaaaa⋯aa⋯a&#x…

ffmpeg库视频硬编码使用流程

‌一、硬件编码核心流程‌ ‌硬件设备初始化 // 创建CUDA硬件设备上下文‌ AVBufferRef *hw_device_ctx NULL; av_hwdevice_ctx_create(&hw_device_ctx, AV_HWDEVICE_TYPE_CUDA, NULL, NULL, 0);// 绑定硬件设备到编码器上下文‌ codec_ctx->hw_device_ctx av_buffer_…

【设计模式】3W 学习法全面解析 7 大结构型模式:Java 实战 + 开源框架应用

3W 学习法总结结构型模式&#xff08;附 Java 代码实战及开源框架应用&#xff09; 结构型模式 主要关注 类与对象的组合&#xff0c;确保不同组件之间能够高效协作&#xff0c;提高系统的灵活性和可维护性。本文采用 3W 学习法&#xff08;What、Why、How&#xff09;&#x…

在大数据开发中ETL是指什么?

hello宝子们...我们是艾斯视觉擅长ui设计和前端数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 在数字经济时代&#xff0c;数据已成为企业最核心的资产。然而&#xff0c;分散在业务系统、日志文件…

前端面试项目拷打

Axios相关 1.在Axios二次封装时&#xff0c;具体封装了哪些内容&#xff0c;如何处理请求拦截和响应拦截&#xff1f; axios二次封装的目的&#xff1a;为了统一处理请求和响应拦截器、错误处理、请求超时、请求头配置等&#xff0c;提高代码可维护性和复用性。 首先创建axios…

「JavaScript深入」Server-Sent Events (SSE):轻量级实时通信技术

Server-Sent Events&#xff08;SSE&#xff09; SSE 的特点1. 单向通信2. 简单易用&#xff0c;浏览器原生支持3. 持久连接4. 纯文本传输5. 自动重连机制6. 轻量级协议 SSE 的实现服务器端实现&#xff08;Node.js 示例&#xff09;1. HTTP 响应头设置2. 数据推送模式3. 服务器…

蓝桥杯2023年第十四届省赛真题-阶乘的和

蓝桥杯2023年第十四届省赛真题-阶乘的和 时间限制: 2s 内存限制: 320MB 提交: 3519 解决: 697 题目描述 给定 n 个数 Ai&#xff0c;问能满足 m! 为∑ni1(Ai!) 的因数的最大的 m 是多少。其中 m! 表示 m 的阶乘&#xff0c;即 1 2 3 m。 输入格式 输入的第一行包含一个整…

影刀RPA拓展-Python变量类型转换

1. Python变量类型转换概述 1.1 类型转换的必要性 Python作为一种动态类型语言&#xff0c;在编程过程中经常需要进行变量类型转换。这主要是因为不同数据类型在存储结构、运算规则和使用场景上存在差异&#xff0c;而在实际开发中&#xff0c;我们常常需要对不同类型的数据进…

Python pyqt+flask做一个简单实用的自动排班系统

这是一个基于Flask和PyQt的排班系统&#xff0c;可以将Web界面嵌入到桌面应用程序中。 系统界面&#xff1a; 功能特点&#xff1a; - 读取员工信息和现有排班表 - 自动生成排班表 - 美观的Web界面 - 独立的桌面应用程序 整体架构&#xff1a; 系统采用前后端分离的架构…

Pycharm接入DeepSeek,提升自动化脚本的写作效率

一.效果展示&#xff1a; 二.实施步骤&#xff1a; 1.DeepSeek官网创建API key&#xff1a; 创建成功后&#xff0c;会生成一个API key&#xff1a; 2. PyCharm工具&#xff0c;打开文件->设置->插件&#xff0c;搜索“Continue”&#xff0c;点击安装 3.安装完成后&…