xlsx.utils.json_to_sheet
是 xlsx
庫中的一個實用函數,用于將 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
函數。如果你有任何問題或需要進一步的幫助,請隨時提問!