千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > js-xlsx用法介紹

js-xlsx用法介紹

來源:千鋒教育
發(fā)布人:xqq
時(shí)間: 2023-11-21 15:06:41 1700550401

一、js-xlsx是什么

js-xlsx是一款純JavaScript實(shí)現(xiàn)的解析和生成Excel文件的工具,可以輕松地在瀏覽器中讀取、修改和生成Excel文件。

js-xlsx支持xlsx、xlsb、xlsm、xls、xml和csv文件格式,同時(shí)還支持解析和輸出Excel文件中的多個(gè)工作簿和工作表。

其中,解析Excel文件使用的工具為SheetJS/js-xlsx中的XLSX工具,生成Excel文件使用的工具為SheetJS/js-xlsx中的JSZip工具。

二、js-xlsx的安裝和引用

通過npm安裝:

npm install xlsx

或者直接在頁面中引入:


使用Node.js引入:

const XLSX = require('xlsx');

三、Excel文件的解析和讀取

使用js-xlsx可以輕松地讀取Excel文件。代碼示例:

const XLSX = require('xlsx');
const workbook = XLSX.readFile('example.xlsx');
const sheetNames = workbook.SheetNames;
const worksheet = workbook.Sheets[sheetNames[0]];
console.log(XLSX.utils.sheet_to_json(worksheet));

上述代碼中,首先通過XLSX.readFile函數(shù)讀取本地的example.xlsx文件。然后,使用workbook.SheetNames獲取工作簿的名稱,在這里我們?nèi)〉谝粋€(gè)工作簿的名稱。最后,通過workbook.Sheets[sheetNames[0]]獲取該工作簿的工作表并將其轉(zhuǎn)化為Json格式輸出。

四、Excel文件的生成和導(dǎo)出

使用js-xlsx可以輕松地生成Excel文件并進(jìn)行導(dǎo)出。代碼示例:

const XLSX = require('xlsx');
const data = [[1, 2, 3], [4, 5, 6]];
const worksheet = XLSX.utils.aoa_to_sheet(data);
const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1");
XLSX.writeFile(workbook, "example.xlsx");

上述代碼中,首先定義了一個(gè)名為data的二維數(shù)組。然后通過XLSX.utils.aoa_to_sheet函數(shù)將該數(shù)組轉(zhuǎn)換為工作表。之后使用XLSX.utils.book_new()創(chuàng)建一個(gè)新的工作簿,并將該工作表添加到該工作簿中。最后,使用XLSX.writeFile函數(shù)將該工作簿導(dǎo)出為名為example.xlsx的文件。

五、Excel文件的處理和篩選

使用js-xlsx可以輕松地處理和篩選Excel文件。代碼示例:

const XLSX = require('xlsx');
const workbook = XLSX.readFile('example.xlsx');
const sheetNames = workbook.SheetNames;
const worksheet = workbook.Sheets[sheetNames[0]];
const data = XLSX.utils.sheet_to_json(worksheet);

const newData = data.filter(item => item[0] > 1);
const newWorksheet = XLSX.utils.json_to_sheet(newData);
const newWorkbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(newWorkbook, newWorksheet, "Sheet1");
XLSX.writeFile(newWorkbook, "new.xlsx");

上述代碼中,首先通過XLSX.readFile函數(shù)讀取本地的example.xlsx文件。然后使用XLSX.utils.sheet_to_json函數(shù)將工作表轉(zhuǎn)換為Json格式,并賦值給data變量。接著,通過篩選技巧(在本例中是選擇第一列的數(shù)值大于1的數(shù)據(jù))過濾掉數(shù)據(jù)并輸出為newData。最后,通過將newData數(shù)組轉(zhuǎn)換為新的工作表,新建一個(gè)工作簿newWorkbook并將該工作表添加到該工作簿中。最后使用XLSX.writeFile函數(shù)將該工作簿導(dǎo)出為名為new.xlsx的文件。

六、Excel文件的格式化和修飾

使用js-xlsx可以輕松地對Excel文件進(jìn)行格式化和修飾。代碼示例:

const XLSX = require('xlsx');
const workbook = XLSX.readFile('example.xlsx');
const sheetNames = workbook.SheetNames;
const worksheet = workbook.Sheets[sheetNames[0]];
const data = XLSX.utils.sheet_to_json(worksheet);

const newHeader = ['列1', '列2', '列3'];
const newWorksheet = XLSX.utils.json_to_sheet(data, {header: newHeader, skipHeader:true, cellDates:true});
XLSX.utils.format_cell(newWorksheet.A1, {font:{bold: true}});
XLSX.utils.format_cell(newWorksheet.B1, {font:{italic: true}});

const newWorkbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(newWorkbook, newWorksheet, "Sheet1");
XLSX.writeFile(newWorkbook, "new.xlsx");

上述代碼中,首先通過XLSX.readFile函數(shù)讀取本地的example.xlsx文件。然后使用XLSX.utils.sheet_to_json函數(shù)將工作表轉(zhuǎn)換為Json格式,并賦值給data變量。接著,定義了一個(gè)名為newHeader的新頭部數(shù)組。用它代替data數(shù)組中的原始頭部。經(jīng)過skipHeader:true的設(shè)置,新工作表中不會出現(xiàn) “列1”,“列2”,“列3”等過濾掉的數(shù)據(jù)。設(shè)置cellDates:true,將任意形式的日期格式轉(zhuǎn)化為JS日期對象。接下來通過XLSX.utils.format_cell函數(shù)對新工作簿中單元格進(jìn)行格式化,給A1單元格加粗字體,給B1單元格添加斜體字體。最后,通過將newData數(shù)組轉(zhuǎn)換為新的工作表,新建一個(gè)工作簿newWorkbook并將該工作表添加到該工作簿中。最后使用XLSX.writeFile函數(shù)將該工作簿導(dǎo)出為名為new.xlsx的文件。

tags: js-xlsx
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT