当前位置:   article > 正文

使用JavaScript读取excel表格数据并导入到数据库_js导入excel并读取内容

js导入excel并读取内容

将excel表格导入到数据库,有多种办法,可以使用数据库管理工具,可以使用python写个脚本,也可以用java开发个小功能,还可以用php来开发。但是当条件受限的时候,没有工具,没有脚本运行环境,这几个现成的方法都无法施展。唯独javascript还能自由的运行,只能基于JavaScript来写脚本,读取excel文件,然后导入到数据库。

1、先准备两个知识点:

H5赋予了JavaScript读取本地文件的能力。

HTML5技术出现以后,提供了从本地读取文件的API,因此可以在前端使用JavaScript脚本调用HTML5的API来读取本地文件。

SheetJS能够在前端操作excel

SheetJS有一个社区版本,是纯JS的可以读取和到处excel的工具库。

2、开始写脚本。

制作一个html页面,放一个上传文件的input和一个提交按钮。

  1. <input type="file" name="xlfile" id="xlf" /> ... or click here to select a file
  2. <input type="button" name="btn" id="btn" value="import" onclick="aimport()"/>

提交按钮绑定一个onclick动作,当点击按钮的时候触发aimport(),aimport()获取到文件对象,并调用do_file来处理文件对象。

  1. function aimport(){
  2. var files = $("input[name=xlfile]")[0].files;
  3. do_file(files);
  4. }

do_file里用到了FileReader,这是HTML5支持的一个文件阅读器,读取文件内容传递给SheetJS处理。

  1. var do_file = (function() {
  2. return function do_file(files) {
  3. rABS = false;
  4. var f = files[0];
  5. var reader = new FileReader();
  6. reader.onload = function(e) {
  7. var data = e.target.result;
  8. if(!rABS) data = new Uint8Array(data);
  9. process_wb(X.read(data, {type: rABS ? 'binary' : 'array'}));
  10. };
  11. if(rABS) reader.readAsBinaryString(f);
  12. else reader.readAsArrayBuffer(f);
  13. };
  14. })();

process_wb方法分为两个步骤,先将数据里的excel的工作表读出来,并转换为json对象。

  1. var to_json = function to_json(workbook) {
  2. var result = {};
  3. workbook.SheetNames.forEach(function(sheetName) {
  4. var roa = X.utils.sheet_to_json(workbook.Sheets[sheetName], {header:1});
  5. if(roa.length) result[sheetName] = roa;
  6. });
  7. return JSON.stringify(result, 2, 2);
  8. };

然后循环读取json对象的每条数据,使用Jquery的ajax功能,构造数据结构,提交给制定的api,完成数据的导入。

  1. output = to_json(wb); break;
  2. output_obj = JSON.parse(output);
  3. vals = output_obj['打印机'];
  4. vals_length= vals.length-1;
  5. console.log(vals_length);
  6. var i=1;
  7. ref = setInterval(function(){
  8. if(i==vals_length){
  9. clearInterval(ref);
  10. }
  11. console.log(vals[i]);
  12. value = vals[i];
  13. var datastring = '';
  14. datastring = {
  15. 'userId':'',
  16. 'ip':value[6],
  17. 'mac':value[7],
  18. 'name':value[9],
  19. 'storagePlace':value[11],
  20. 'office':value[1],
  21. 'department':'',
  22. 'user':value[12],
  23. 'passport':value[13],
  24. 'purpose':value[14]==1?'communal':'personal',
  25. 'isRadiate':value[10]==1?'true':'false',
  26. 'note':value[15]
  27. };
  28. $.ajax({
  29. type: "POST",
  30. url: "http://localhost:8080/api/printer",
  31. data: datastring,
  32. dataType: "json",
  33. success: function(msg) {
  34. console.log(msg);
  35. }
  36. });
  37. i=i+1;
  38. },1000);

ajax是异步的,再配合定时器,可以完美的控制程序。

最终实现效果如下:

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/668864
推荐阅读
相关标签
  

闽ICP备14008679号