一、js-xlsx是什么
js-xlsx是一款純JavaScript實現的解析和生成Excel文件的工具,可以輕松地在瀏覽器中讀取、修改和生成Excel文件。
js-xlsx支持xlsx、xlsb、xlsm、xls、xml和csv文件格式,同時還支持解析和輸出Excel文件中的多個工作簿和工作表。
其中,解析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函數讀取本地的example.xlsx文件。然后,使用workbook.SheetNames獲取工作簿的名稱,在這里我們取第一個工作簿的名稱。最后,通過workbook.Sheets[sheetNames[0]]獲取該工作簿的工作表并將其轉化為Json格式輸出。
四、Excel文件的生成和導出
使用js-xlsx可以輕松地生成Excel文件并進行導出。代碼示例:
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");
上述代碼中,首先定義了一個名為data的二維數組。然后通過XLSX.utils.aoa_to_sheet函數將該數組轉換為工作表。之后使用XLSX.utils.book_new()創建一個新的工作簿,并將該工作表添加到該工作簿中。最后,使用XLSX.writeFile函數將該工作簿導出為名為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函數讀取本地的example.xlsx文件。然后使用XLSX.utils.sheet_to_json函數將工作表轉換為Json格式,并賦值給data變量。接著,通過篩選技巧(在本例中是選擇第一列的數值大于1的數據)過濾掉數據并輸出為newData。最后,通過將newData數組轉換為新的工作表,新建一個工作簿newWorkbook并將該工作表添加到該工作簿中。最后使用XLSX.writeFile函數將該工作簿導出為名為new.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 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函數讀取本地的example.xlsx文件。然后使用XLSX.utils.sheet_to_json函數將工作表轉換為Json格式,并賦值給data變量。接著,定義了一個名為newHeader的新頭部數組。用它代替data數組中的原始頭部。經過skipHeader:true的設置,新工作表中不會出現 “列1”,“列2”,“列3”等過濾掉的數據。設置cellDates:true,將任意形式的日期格式轉化為JS日期對象。接下來通過XLSX.utils.format_cell函數對新工作簿中單元格進行格式化,給A1單元格加粗字體,給B1單元格添加斜體字體。最后,通過將newData數組轉換為新的工作表,新建一個工作簿newWorkbook并將該工作表添加到該工作簿中。最后使用XLSX.writeFile函數將該工作簿導出為名為new.xlsx的文件。