如何利用JavaScript讀取excel文件并繪制echarts圖形
1、場景描述
- 通常來說,前端要拿到excel數(shù)據(jù),都是先上傳存儲數(shù)據(jù)庫,然后再請求后端接口,獲取數(shù)據(jù)。
- 但有100個產(chǎn)品經(jīng)理,就會有101個不同的需求。
- 本文以自己的vue項目為例。
2、需求描述
- 現(xiàn)有一張excel財務(wù)報表,需要根據(jù)這張excel表繪制成各種echarts圖形,用于年度匯報。
- 不經(jīng)過后端,前端獨立完成。
3、功能實現(xiàn)
首先,為了將excel數(shù)據(jù)繪制成echarts圖表,前端得拿到excel數(shù)據(jù)。
這里我們借助js-xlsx.js庫,安裝xlsx:
cnpm i -S xlsx
你也可以cdn的方式直接引用:
<script src="http://oss.sheetjs.com/js-xlsx/xlsx.full.min.js"></script>
首先你需要讀取excel文件:
<input type="file" id="excel-file">
添加響應(yīng)事件change獲取excel數(shù)據(jù):
<input type="file" id="excel-file" @change="updateFile">
通過updateFile接受數(shù)據(jù)
updateFile(e) { ? let files = e.target.files; ? console.log(files) }
得到files,說明我們已經(jīng)獲取到上傳的excel文件?,F(xiàn)在我們需要將files轉(zhuǎn)化成我們熟悉的數(shù)組類型。 我們使用fileReader方法。
FileReader共有4種讀取方法:
- 1.readAsArrayBuffer(file):將文件讀取為ArrayBuffer。
- 2.readAsBinaryString(file):將文件讀取為二進(jìn)制字符串
- 3.readAsDataURL(file):將文件讀取為Data URL
- 4.readAsText(file, [encoding]):將文件讀取為文本,encoding缺省值為'UTF-8'
updateFile(e) { let _this = this; let files = e.target.files; let fileReader = new FileReader(); fileReader.onload = function(ev) { try { let data = ev.target.result; let workbook = XLSX.read(data, { type: "binary" }); // 以二進(jìn)制流方式讀取得到整份excel表格對象 let sheetName = workbook.Sheets[workbook.SheetNames[0]]; // 這里我們只讀取第一張表,獲取表名(如Sheet1) _this.excelData = XLSX.utils.sheet_to_json(sheetName, { header: "A", raw: true, defval: " " // 意思是從頭開始匹配,如遇到空格,將跳過執(zhí)行,并替換為" "字符串。 }); console.log(_this.excelData) // excelData在data()中聲明的變量, _this.excelData就是我們熟悉的數(shù)組數(shù)據(jù)了。 } catch (e) { return _this.$message.error("文件類型不正確!"); } }; // fileReader.readAsBinaryString(files[0]); // 將文件讀取為二進(jìn)制字符串展示在頁面 }
excel多張表格的處理:
var fromTo = '' // 表格范圍,可用于判斷表頭數(shù)量是否正確 // 遍歷每張表讀取 for (var sheet in workbook.Sheets) { if (workbook.Sheets.hasOwnProperty(sheet)) { fromTo = workbook.Sheets[sheet]['!ref'] // 表頭數(shù)量 _this.excelData = _this.excelData.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet]), { header: 'A', raw: true, defval: ' ' }) } }
將得到的數(shù)據(jù)渲染在echarts中,效果如下:
4、尾言
- 本文中主要講解excel數(shù)據(jù)獲取部分。
- 對于將獲取的數(shù)組數(shù)據(jù)如何處理將會在后面的文章中詳細(xì)講解。
到此這篇關(guān)于如何利用JavaScript讀取excel文件并繪制echarts圖形的文章就介紹到這了,更多相關(guān)js讀取excel文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
javascript仿php的print_r函數(shù)輸出json數(shù)據(jù)
輸出json數(shù)據(jù),php的print_r函數(shù)可以輕松實現(xiàn),下面為大家介紹下javascript也可以模仿print_r函數(shù)輸出json數(shù)據(jù),具體實現(xiàn)如下,感興趣的朋友可以了解下2013-09-09基于MooTools的很有創(chuàng)意的滾動條時鐘動畫
一款很有創(chuàng)意的時鐘js動畫.是利用系統(tǒng)滾動條來構(gòu)成一個 時:分:秒 的盤. 再利用滾動條的長度變化做過渡動畫.2010-11-11javascript 多種搜索引擎集成的頁面實現(xiàn)代碼
這個頁面是為了方便自己同時使用多種搜索引擎(呵呵我用其作默認(rèn)主頁),在IE5/IE6/FireFox下均運行正常,效果如下圖2010-01-01