一、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的安裝和引用
通過(guò)npm安裝:
npm install xlsx
或者直接在頁(yè)面中引入:
使用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));
上述代碼中,首先通過(guò)XLSX.readFile函數(shù)讀取本地的example.xlsx文件。然后,使用workbook.SheetNames獲取工作簿的名稱,在這里我們?nèi)〉谝粋€(gè)工作簿的名稱。最后,通過(guò)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ù)組。然后通過(guò)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");
上述代碼中,首先通過(guò)XLSX.readFile函數(shù)讀取本地的example.xlsx文件。然后使用XLSX.utils.sheet_to_json函數(shù)將工作表轉(zhuǎn)換為Json格式,并賦值給data變量。接著,通過(guò)篩選技巧(在本例中是選擇第一列的數(shù)值大于1的數(shù)據(jù))過(guò)濾掉數(shù)據(jù)并輸出為newData。最后,通過(guò)將newData數(shù)組轉(zhuǎn)換為新的工作表,新建一個(gè)工作簿newWorkbook并將該工作表添加到該工作簿中。最后使用XLSX.writeFile函數(shù)將該工作簿導(dǎo)出為名為new.xlsx的文件。
六、Excel文件的格式化和修飾
使用js-xlsx可以輕松地對(duì)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");
上述代碼中,首先通過(guò)XLSX.readFile函數(shù)讀取本地的example.xlsx文件。然后使用XLSX.utils.sheet_to_json函數(shù)將工作表轉(zhuǎn)換為Json格式,并賦值給data變量。接著,定義了一個(gè)名為newHeader的新頭部數(shù)組。用它代替data數(shù)組中的原始頭部。經(jīng)過(guò)skipHeader:true的設(shè)置,新工作表中不會(huì)出現(xiàn) “列1”,“列2”,“列3”等過(guò)濾掉的數(shù)據(jù)。設(shè)置cellDates:true,將任意形式的日期格式轉(zhuǎn)化為JS日期對(duì)象。接下來(lái)通過(guò)XLSX.utils.format_cell函數(shù)對(duì)新工作簿中單元格進(jìn)行格式化,給A1單元格加粗字體,給B1單元格添加斜體字體。最后,通過(guò)將newData數(shù)組轉(zhuǎn)換為新的工作表,新建一個(gè)工作簿newWorkbook并將該工作表添加到該工作簿中。最后使用XLSX.writeFile函數(shù)將該工作簿導(dǎo)出為名為new.xlsx的文件。