javascript
使用JavaScript读取excel表格数据并导入到数据库
將excel表格導入到數據庫,有多種辦法,可以使用數據庫管理工具,可以使用python寫個腳本,也可以用java開發個小功能,還可以用php來開發。但是當條件受限的時候,沒有工具,沒有腳本運行環境,這幾個現成的方法都無法施展。唯獨javascript還能自由的運行,只能基于JavaScript來寫腳本,讀取excel文件,然后導入到數據庫。
1、先準備兩個知識點:
H5賦予了JavaScript讀取本地文件的能力。
HTML5技術出現以后,提供了從本地讀取文件的API,因此可以在前端使用JavaScript腳本調用HTML5的API來讀取本地文件。
SheetJS能夠在前端操作excel
SheetJS有一個社區版本,是純JS的可以讀取和到處excel的工具庫。
2、開始寫腳本。
制作一個html頁面,放一個上傳文件的input和一個提交按鈕。
<input type="file" name="xlfile" id="xlf" /> ... or click here to select a file <input type="button" name="btn" id="btn" value="import" onclick="aimport()"/>提交按鈕綁定一個onclick動作,當點擊按鈕的時候觸發aimport(),aimport()獲取到文件對象,并調用do_file來處理文件對象。
function aimport(){var files = $("input[name=xlfile]")[0].files;do_file(files); }do_file里用到了FileReader,這是HTML5支持的一個文件閱讀器,讀取文件內容傳遞給SheetJS處理。
var do_file = (function() {return function do_file(files) {rABS = false;var f = files[0];var reader = new FileReader();reader.onload = function(e) {var data = e.target.result;if(!rABS) data = new Uint8Array(data);process_wb(X.read(data, {type: rABS ? 'binary' : 'array'}));};if(rABS) reader.readAsBinaryString(f);else reader.readAsArrayBuffer(f);}; })();process_wb方法分為兩個步驟,先將數據里的excel的工作表讀出來,并轉換為json對象。
var to_json = function to_json(workbook) {var result = {};workbook.SheetNames.forEach(function(sheetName) {var roa = X.utils.sheet_to_json(workbook.Sheets[sheetName], {header:1});if(roa.length) result[sheetName] = roa;});return JSON.stringify(result, 2, 2);};然后循環讀取json對象的每條數據,使用Jquery的ajax功能,構造數據結構,提交給制定的api,完成數據的導入。
output = to_json(wb); break; output_obj = JSON.parse(output); vals = output_obj['打印機']; vals_length= vals.length-1; console.log(vals_length); var i=1; ref = setInterval(function(){if(i==vals_length){clearInterval(ref); } console.log(vals[i]);value = vals[i];var datastring = '';datastring = {'userId':'','ip':value[6],'mac':value[7],'name':value[9],'storagePlace':value[11],'office':value[1],'department':'','user':value[12],'passport':value[13],'purpose':value[14]==1?'communal':'personal','isRadiate':value[10]==1?'true':'false','note':value[15]};$.ajax({type: "POST",url: "http://localhost:8080/api/printer", data: datastring,dataType: "json",success: function(msg) {console.log(msg);} });i=i+1;},1000);ajax是異步的,再配合定時器,可以完美的控制程序。
最終實現效果如下:
?
總結
以上是生活随笔為你收集整理的使用JavaScript读取excel表格数据并导入到数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器视觉检测:电阻电容的二次筛选提高效率
- 下一篇: SpringBoot 整合QUARTZ