Nodejs excel(.xlsx) 文件的讀寫方式
Nodejs excel(.xlsx) 文件讀寫
data.xlsx
名字 | 年齡 |
---|---|
張三 | 18 |
李四 | 19 |
王五 | 20 |
獲取數(shù)據(jù)
import xlsx from "xlsx"; const workBook = xlsx.readFile("./data.xlsx");??
獲取第一個 execle 工作簿表格
let name = workBook.SheetNames[0] let sheet = workBook.Sheets[name]
1. 輸出 json 格式
console.log(xlsx.utils.sheet_to_json(sheet));
[ ?? ?{ ?? ??? ?名字:"張三", ?? ??? ?年齡:"18"?? ? ?? ?}, ?? ?{ ?? ??? ?名字:"李四", ?? ??? ?年齡:"19" ?? ?}, ?? ?{ ?? ??? ?名字:"王五", ?? ??? ?年齡:"20" ?? ?} ]
2. 輸出 csv 格式
console.log(xlsx.utils.sheet_to_csv(sheet));
名字,年齡,,,,,,,,,,,,,,,,,
張三,18,,,,,,,,,,,,,,,,,
李四,19,,,,,,,,,,,,,,,,,
王五,20,,,,,,,,,,,,,,,,,
3. 輸出 html 格式
console.log(xlsx.utils.sheet_to_html(sheet));
<html><head><meta charset="utf-8"/><title>SheetJS Table Export</title></head><body><table><tr><td data-t="s" data-v="名字" id="sjs-A1">名字</td><td data-t="s" data-v="年齡" id="sjs-B1">年齡</td></tr><tr><td data-t="s" data-v="張三" id="sjs-A2">張三</td><td data-t="n" data-v="18" id="sjs-B2">18</td></tr><tr><td data-t="s" data-v="李四" id="sjs-A3">李四</td><td data-t="n" data-v="19" id="sjs-B3">19</td></tr><tr><td data-t="s" data-v="王五" id="sjs-A4">王五</td><td data-t="n" data-v="20" id="sjs-B4">20</td></tr></table></body></html>
4.輸出 formulae 格式
console.log(xlsx.utils.sheet_to_formulae(sheet));
[ "A1='名字", "B1='年齡", "A2='張三", 'B2=18', "A3='李四", 'B3=19', "A4='王五", 'B4=20' ]
輸出成文件
xlsx.writeFile(workBook, "./output.xlsx");
全部代碼
import xlsx from "xlsx"; const workBook = xlsx.readFile("./data.xlsx"); let name = workBook.SheetNames[0]; let sheet = workBook.Sheets[name]; console.log(xlsx.utils.sheet_to_json(sheet)); console.log(xlsx.utils.sheet_to_csv(sheet)); console.log(xlsx.utils.sheet_to_html(sheet)); console.log(xlsx.utils.sheet_to_formulae(sheet)); xlsx.writeFile(workBook, "./output.xlsx");
方法封裝
import xlsx from "xlsx"; /** * 解析 excel 文件成 json 對象 * @param {string} filePath */ export function parseExcel(filePath) { // 讀取文件并解析工作簿 const workBook = xlsx.readFile(filePath); // 獲取第一個表格 let name = workBook.SheetNames[0]; // 解析表格 return xlsx.utils.sheet_to_json(workBook.Sheets[name]); } /** * 將對象數(shù)據(jù)解析成 excel * @param {string} filePath 路徑 * @param {Array} list 數(shù)據(jù) * @param {string} sheetName 表格名字, 默認(rèn) Sheet1 */ export function writeExcel(filePath, list, sheetName = "Sheet1") { // 新建工作簿 const workBook = xlsx.utils.book_new(); // 添加表格 xlsx.utils.book_append_sheet(workBook, xlsx.utils.json_to_sheet(list), sheetName); // 輸出文件 xlsx.writeFile(workBook, filePath); }
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Bun入門學(xué)習(xí)教程吊打Node或Deno的現(xiàn)代JS運(yùn)行時(shí)
這篇文章主要為大家介紹了一款吊打Node或Deno的現(xiàn)代JS運(yùn)行時(shí),Bun入門學(xué)習(xí)教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07基于nodejs res.end和res.send的區(qū)別
今天小編就為大家分享一篇基于nodejs res.end和res.send的區(qū)別,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05基于Node的Axure文件在線預(yù)覽的實(shí)現(xiàn)代碼
這篇文章主要介紹了基于Node的Axure文件在線預(yù)覽的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08nodejs實(shí)現(xiàn)套接字服務(wù)功能詳解
這篇文章主要介紹了nodejs實(shí)現(xiàn)套接字服務(wù)功能,簡單描述了套接字的概念、功能,并結(jié)合實(shí)例形式分析了nodejs使用socket對象創(chuàng)建及使用套接字進(jìn)行數(shù)據(jù)傳輸相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2018-06-06Node.js基礎(chǔ)入門之path模塊,url模塊,http模塊使用詳解
這篇文章主要為大家介紹了Node.js中的三個模塊(path、url、http)的使用詳解,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-03-03在Node.js中實(shí)現(xiàn)后端與前端的交互的方法詳解
在前后端不分離的應(yīng)用模式中,前端頁面看到的效果都是由后端控制,由后端渲染頁面或重定向,也就是后端需要控制前端的展示,前端與后端的耦合度很高, 所以本文給大家介紹了在Node.js中實(shí)現(xiàn)后端與前端的交互的方法,需要的朋友可以參考下2024-09-09