一、SheetJS中文名
SheetJS是一款用於讀寫Excel文件的JavaScript庫。在中文社區中,SheetJS往往被稱為“表格JS”。因為其功能強大、易用、免費等特點,SheetJS在Web開發中被廣泛使用。
二、怎麼使用SheetJS?
在使用SheetJS之前,需要先下載該庫。可以在SheetJS的官網: https://sheetjs.com/ 中下載或使用npm安裝。
下面是一個簡單的使用示例:讀取Excel文件內容並將其轉換為JSON格式。
var xlf = document.getElementById('xlf'); if(!xlf) return; xlf.onchange = function(evt) { /* 實例化文件讀取器 */ var reader = new FileReader(); /* 讀取文件,進入回調函數 */ reader.onload = function(e) { /* 獲取excel內容 */ var contents = e.target.result; /* 解析excel */ var wb = XLSX.read(contents, {type:'binary'}); /* 讀取第1個sheet */ var sheet_name_list = wb.SheetNames; var data = XLSX.utils.sheet_to_json(wb.Sheets[sheet_name_list[0]]); /* 處理結果 */ console.log(data); }; /* 以二進制方式讀取文件內容 */ reader.readAsBinaryString(evt.target.files[0]); };
上述代碼中,我們通過元素監聽文件上傳,然後通過FileReader接口讀取文件內容,並通過SheetJS解析成JSON格式。
三、SheetJS文檔
SheetJS文檔是很詳細的。它包含了大量的示例代碼和API文檔,其中不乏一些高階用法和注意事項。下面我們選擇幾個重要的API進行講解。
XLSX.readFile(file, [options])
該方法用於讀取Excel文件,參數file為具體的Excel文件,options為可選參數,用於自定義文件的讀取方式。
XLSX.utils.sheet_to_json(worksheet, [options])
該方法用於將指定工作表中的數據轉換成JSON對象。該方法的第一個參數worksheet為工作表對象,第二個參數為可選參數,用於自定義轉換方式。
XLSX.write(wb, [options])
該方法用於將工作簿對象寫出成具體的Excel文件。該方法的第一個參數wb為工作簿對象,第二個參數為可選參數,用於自定義寫出方式。
XLSX.utils.book_append_sheet(workbook, worksheet, sheetname)
該方法用於在工作簿對象中新增一個工作表。該方法的第一個參數workbook為工作簿對象,第二個參數worksheet為工作表對象,第三個參數sheetname為工作表的名稱。
四、文檔sheet
SheetJS文檔中包含很多示例。這些示例涵蓋了SheetJS的大部分API,也可以用作開發者學習和參考。
下面是一個非常簡單的案例,用於將JSON格式的數據導入到Excel中。
/* 生成Excel文檔 */ var wb = XLSX.utils.book_new(); var ws = XLSX.utils.json_to_sheet([ {name: "張三", age: 24, gender: "男"}, {name: "李四", age: 22, gender: "女"}, {name: "王五", age: 25, gender: "男"} ]); XLSX.utils.book_append_sheet(wb, ws, "Sheet1"); /* 將文檔保存到文件 */ XLSX.writeFile(wb, "example.xlsx");
以上代碼首先生成一個工作簿對象wb,並通過XLSX.utils.json_to_sheet方法將JSON格式的數據轉換成Worksheet對象,最後通過XLSX.utils.book_append_sheet方法將工作表對象添加到工作簿wb中。
接下來我們通過XLSX.writeFile方法將工作簿寫入到磁盤中。
五、結語
通過本文的介紹,我們了解到了SheetJS的一些特點、使用方法以及重要的API。SheetJS是一款非常棒的JavaScript庫,它的功能強大、易學易用,適用於Web開發中的各種場景。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/252887.html