Nodejs excel(.xlsx) 文件的讀寫方式
Nodejs excel(.xlsx) 文件讀寫
data.xlsx
| 名字 | 年齡 |
|---|---|
| 張三 | 18 |
| 李四 | 19 |
| 王五 | 20 |
獲取數(shù)據(jù)
import xlsx from "xlsx";
const workBook = xlsx.readFile("./data.xlsx");??獲取第一個(gè) 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 對(duì)象
* @param {string} filePath
*/
export function parseExcel(filePath) {
// 讀取文件并解析工作簿
const workBook = xlsx.readFile(filePath);
// 獲取第一個(gè)表格
let name = workBook.SheetNames[0];
// 解析表格
return xlsx.utils.sheet_to_json(workBook.Sheets[name]);
}
/**
* 將對(duì)象數(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);
}以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
前端常見面試題之a(chǎn)sync/await和promise的區(qū)別
async/await是異步代碼的新方式,以前的方法有回調(diào)函數(shù)和Promise,下面這篇文章主要給大家介紹了關(guān)于前端常見面試題之a(chǎn)sync/await和promise區(qū)別的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
Nodejs + Websocket 指定發(fā)送及群聊的實(shí)現(xiàn)
這篇文章主要介紹了Nodejs + Websocket 指定發(fā)送及群聊的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
nodemailer郵箱發(fā)送驗(yàn)證碼的實(shí)現(xiàn)
郵箱注冊(cè)是常見的功能,通常需要發(fā)送郵箱驗(yàn)證碼驗(yàn)證,本文就來介紹一下nodemailer郵箱發(fā)送驗(yàn)證碼的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10
nodejs npm install全局安裝和本地安裝的區(qū)別
這篇文章主要介紹了nodejs npm install 全局安裝和非全局安裝的區(qū)別,即帶參數(shù)-g和不帶參數(shù)-g安裝的區(qū)別,需要的朋友可以參考下2014-06-06
Node.js實(shí)現(xiàn)簡單的爬取的示例代碼
這篇文章主要介紹了Node.js實(shí)現(xiàn)簡單的爬取的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
nodejs+express實(shí)現(xiàn)文件上傳下載管理網(wǎng)站
這篇文章主要為大家詳細(xì)介紹了nodejs+express實(shí)現(xiàn)文件上傳下載管理的網(wǎng)站,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03

