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.pswp.cn/diannao/73899.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/73899.shtml
英文地址,請注明出處:http://en.pswp.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.安裝完成后&…