中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript中怎么解析excel文件

發布時間:2021-08-10 15:26:28 來源:億速云 閱讀:204 作者:Leah 欄目:大數據

這期內容當中小編將會給大家帶來有關JavaScript中怎么解析excel文件,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

頁面中引入這個js文件之后會有一個全局變量XLSX

JavaScript中怎么解析excel文件,

這個全局變量有許多屬性方法如圖:

JavaScript中怎么解析excel文件

咱們只介紹最常用的三個,上圖已經用紅線畫出來了,read,utils,writeFile三個方法。

上面說到的讀取excle文件的內容,用到的就是這個read方法,這個方法需要傳遞一個參數,這個參數是一個二進制數據類型的excle數據。

那么這里就出現了一個問題,我們如何能拿到excle文件的二進制數據呢?

這里又牽扯出了一個問題,瀏覽器如何讀取excel文件的二進制數據,這里需要用到HTML5規范的一個新特性FileReader。api文檔地址:https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader,

下面是其簡介:

FileReader 對象允許Web應用程序異步讀取存儲在用戶計算機上的文件(或原始數據緩沖區)的內容,使用 File 或 Blob 對象指定要讀取的文件或數據。

其中File對象可以是來自用戶在一個<input>元素上選擇文件后返回的FileList對象,也可以來自拖放操作生成的 DataTransfer對象,還可以是來自在一個HTMLCanvasElement上執行mozGetAsFile()方法后返回結果。

上面的文字翻譯成人話就是,FileReader 允許我們讀取用戶計算機上的內容,通過File對象或blob對象,也就是FileReader 通過讀取File對象或者Blob對象得到計算機上文件的內容。

那么如何獲取File對象呢?可以通過一個上傳文件的input元素或者拖拽對象。

這里為了簡便我們就通過一個上傳文件的input元素來獲取File對象。代碼演示如下,只有一個input元素,并監聽這個元素的change事件,嘗試傳遞一個excel文件:

JavaScript中怎么解析excel文件

打印結果為:

JavaScript中怎么解析excel文件

通過input的change事件對象的target.files得到一個數組,數組的第一項是一個File數據類型的數據,(這里需要注意的是為什么files是個數組呢?因為input可以同時上傳多個文件,我們這里只上傳一個文件所以選擇第0個元素)。

既然得到File類型的數據了,那么就需要使用FileReader來讀取這個File來獲取二進制內容了。

如何讀取呢?看代碼:

JavaScript中怎么解析excel文件

按照FileReader的文檔的使用方法,分為三步,第一步new一個FileReader對象,第二步監聽FileReader實例的onload函數,函數的事件對象中存儲著讀取的結果,第三步通過調用FIleReader的readAsBinaryString方法將File文件讀取為二進制文件,結果如下:

JavaScript中怎么解析excel文件

以上便是二進制數據在瀏覽器中顯示的結果,這里需要注意第三步中的readAsBinaryString可以替換為另外一個方法,代碼如下:

JavaScript中怎么解析excel文件

將readAsBinaryString替換為readAsArrayBuffer方法,打印結果如下:

JavaScript中怎么解析excel文件

這兩種方法都可以,只不過需要注意readAsBinaryString的到的是BinaryString類型的數據,可以理解為二進制的字符串。

readAsArrayBuffer得到的是ArrayBuffer類型的數據,可以理解為特殊的二進制數據。具體二者區別這里不做討論。

得到二進制數據了,這是就需要用XLSX這個npm包的read方法來讀取二進制數據了。代碼如下:

JavaScript中怎么解析excel文件

這里需要注意,當調用XLSX讀取excel的二進制數據類型的時候必須指明數據類型,上圖中的二進制數據是通過readAsBinaryString方法讀取的,所以type應該傳入binary,如果是readAsArrayBuffer那么對應的type應該改為'array'。代碼如下:

JavaScript中怎么解析excel文件

上面的打印結果是一樣的,打印結果如圖:

JavaScript中怎么解析excel文件

這里面就包括了excel的所有數據了,只不過暫時還不能使用,這里有兩個屬性比較重要,SheetNames和Sheets,一個保存著所有文檔的名稱,一個保存著文檔的數據。

下面來看一張excel如圖:

JavaScript中怎么解析excel文件

我們可以看到,excel的行用ABCD來表示,列用數字來表示,并且一個excel可以有多張表,每張表的都有獨立的名稱,如上圖sheet1和sheet2.

我們在我們的頁面中重新上傳測試的excel再來觀察打印結果:

JavaScript中怎么解析excel文件

我們看到SheetNames能得到excel中所有表的名稱,但是sheets的數據好像不太對頭,這個不能用啊,怎么辦?

XLSX的另外一個屬性utils上有很多的方法,打印如圖:

JavaScript中怎么解析excel文件

好多,好強大,仔細觀察,發現有一個sheet_to_json的方法,那就試試,代碼如下:

JavaScript中怎么解析excel文件

打印結果如下:

JavaScript中怎么解析excel文件

成功拿到了json,得到json后就簡單了,是渲染,是傳遞到后端,隨你如何操作。還有其他的一些方法你也可以嘗試一下,這里不做演示了。

以上便是瀏覽器借助js讀取excel文件,代碼量不多但稍微有點繁瑣,涉及到了FileReader這個html5的新特性。

接下來,來演示一下,寫的操作:關于寫的操作,我們同樣從一個需求入手,比如頁面中有一張table表格,表格旁有一個下載按鈕,用戶點擊下載按鈕,將table表格以excel的形式下載到用戶電腦。如圖:

JavaScript中怎么解析excel文件

代碼如下:

JavaScript中怎么解析excel文件

演示結果如下:

JavaScript中怎么解析excel文件

打開excel文檔如圖:

JavaScript中怎么解析excel文件

上述就是小編為大家分享的JavaScript中怎么解析excel文件了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平谷区| 宁阳县| 岱山县| 夹江县| 萍乡市| 遂昌县| 浦城县| 拜城县| 牙克石市| 武汉市| 和田市| 新巴尔虎左旗| 长海县| 米易县| 昭通市| 贡山| 贺兰县| 宁武县| 长治县| 介休市| 航空| 富蕴县| 错那县| 平罗县| 正宁县| 紫金县| 怀仁县| 囊谦县| 于都县| 平泉县| 榕江县| 新干县| 聂拉木县| 阿巴嘎旗| 阿坝县| 泽州县| 余姚市| 南江县| 镇原县| 通辽市| 东丰县|