下载SheetJS文件

GitHub下载地址:https://github.com/SheetJS/sheetjs

下载之后打开其中的dist文件目录,能看到其中有xlsx.core.min.js和xlsx.full.min.js两个JS文件,使用其中一个文件就行,一般情况下使用xlsx.core.min.js就可以了。

此处以xlsx.core.min.js为例

具体用法如下:

1.首先在HTML中定义如下

<input type="file" id="inputfilename">   <!--选择文件的input--><button onclick="readWorkbookFromLocalFile()">读取Excel表格</button> <!--读取文件的按钮--><div id="result"></div> <!--显示所读取excel的区域-->

2. 引入JS

<script src="../../js/xlsx.core.min.js"></script>

3. 使用XLSX.read方法读取本地excel文件

 function readWorkbookFromLocalFile() {var file = document.getElementById('inputfilename').files[0];if (file) {var reader = new FileReader();reader.onload = function (e) {var data = e.target.result;var workbook = XLSX.read(data, { //XLSX.read()方法会返回一个workbook 对象type: 'binary'});readWorkbook(workbook);};reader.readAsBinaryString(file);} else {alert('请先选择文件');}}

4. 得到exce文件的csv和json格式

得到csv格式是为了在网页中显示读取到的表格
得到json格式是为了与后台进行数据交互

var json = null;
var csv = '';function readWorkbook(workbook) {var sheetNames = workbook.SheetNames; // 工作表名称集合var worksheet = workbook.Sheets[sheetNames[0]]; // 这里我们只读取第一张sheet的内容csv = XLSX.utils.sheet_to_csv(worksheet); //这里便可以得到csv格式document.getElementById('result').innerHTML = csv2table(csv);  //使用csv2table()函数将其转换为简单的HTML表格,csv2table()函数定义在下一个代码块中json = XLSX.utils.sheet_to_json(worksheet); // 成功转换为json格式后,可能表格中的中文属性名并不是后台所需要的字段名// 那么,就可以使用如下方法,遍历这个json对象,然后对其中的字段名进行修改for (var i in json) {for (var key in json[i]) {if (key == '年龄') {json[i]['age'] = json[i][key] //修改属性名为“age”delete json[i]['年龄'] //删除“年龄”} else if (key == '性别') {if (json[i][key] == '男') {json[i][key] = '1';} else {json[i][key] = '0';}json[i]['sex'] = json[i][key] //修改属性名为“sex”delete json[i]['性别'] //删除“性别”} else if (key == '姓名') {json[i]['username'] = json[i][key] //修改属性名为“username”delete json[i]['姓名'] //删除“姓名”} else if (key == '工号') {json[i]['workId'] = json[i][key] + ''; //修改属性名为“workId”delete json[i]['工号'] //删除“工号”}}}}

5. 将csv转换成简单的表格,会忽略单元格合并,在第一行和第一列追加类似excel的索引

function csv2table(csv) {var html = '<table>';var rows = csv.split('\n');rows.pop(); // 最后一行没用的rows.forEach(function (row, idx) {var columns = row.split(',');columns.unshift(idx + 1); // 添加行索引if (idx == 0) { // 添加列索引html += '<tr>';for (var i = 0; i < columns.length; i++) {html += '<th>' + (i == 0 ? '' : String.fromCharCode(65 + i - 1)) + '</th>';}html += '</tr>';}html += '<tr>';columns.forEach(function (column) {html += '<td>' + column + '</td>';});html += '</tr>';});html += '</table>';return html;
}

到这里就能够实现通过SheetJS在页面中显示从本地读取到的excel文件了,也能够拿到想要与后台进行交互时的标准json数据格式,最后只需要发送Ajax与后台进行交互就OK拉!

参考文档 https://www.cnblogs.com/liuxianan/p/js-excel.html

使用JavaScript实现纯前端读取excel文件并与后台进行交互相关推荐

  1. 纯前端读取excel (SheetJS js-xlsx.js框架)

    文章目录 介绍 兼容性 使用方法 实现思路 文件引用 代码示例及详解 开发注意 介绍 应项目需求需要做一个纯前端读取excel文件的功能.各方面评估框架后选择了SheetJS的xlsx.js. She ...

  2. 如何使用JavaScript实现纯前端读取和导出excel文件(转)

    转自小茗同学博客:https://www.cnblogs.com/liuxianan/p/js-excel.html js-xlsx 介绍 由SheetJS出品的js-xlsx是一款非常方便的只需要纯 ...

  3. 如何使用JavaScript实现纯前端读取和导出excel文件

    js-xlsx 介绍 由SheetJS出品的js-xlsx是一款非常方便的只需要纯JS即可读取和导出excel的工具库,功能强大,支持格式众多,支持xls.xlsx.ods(一种OpenOffice专 ...

  4. JavaScript纯前端解析Excel文件

    最近在开发时候遇到了这样的一个需求:需要在前端通过解析Excel将Excel中的值进行回传填入.我想在实际的开发过程中,肯定大家也会遇到这样的需求,在这介绍一个比较不错的JS工具库:js-xlsx,及 ...

  5. 前端读取Excel文件(使用js-xls插件)

    前言: 由于项目需要,现在要用户在上传文件之后,页面能实时.即不通过服务器就能读取到excel的表头关键字,就像上传图片实时预览一样,将关键字展示到页面上. 官方例子: 使用js-xls插件,亲测IE ...

  6. 前端读取Excel文件,回显页面表格(使用js-xls 插件)

    序: 由于项目需求,不使用后台读取Excel数据回显表格,减少前后台交互,降低服务器的压力,使用前台进行操作. 需要用到的js 插件, xlsx.core.min.js 下载地址 demo <! ...

  7. 纯前端导出excel文件(包含设置样式)

  8. javaScript读取excel文件中某几行的数据

    一.介绍 这份代码借鉴了YouTube上的这个视频:https://www.youtube.com/watch?v=OK60UdWyUdE代码,讲解得很棒,让我一个不太懂javasript的小白明白了 ...

  9. C#读取excel文件数据丢失问题

    最近在处理C#读取excel文件时碰到了个BT问题,有部分数据读取失败了,翻看了不少资料,终于找到了问题的所在,所以在这里跟大伙分享下: 简要问题分析: 用C#读取excel文件数据时,出现数据丢失现 ...

  10. matlab显示服务器出现意外,Matlab 读取excel文件提示服务器出现意外情况或无法读取问题解决...

    1.问题描述: 该错误通常发生在应用函数读取excel文件(后缀xls或xlsx)时. 应用xlsread函数读取提示服务器出现意外情况: 应用importdata读取时提示can't open fi ...

最新文章

  1. 漫说中介者模式--创业公司成长记
  2. 番石榴条纹类的细粒度并发
  3. java后端分享整理
  4. 串口,com口,ttl,max232你应该知道的事
  5. android源码中的ndk,如何在不需要Android操作系统源代码的情况下在Android NDK中创建新的NativeWindow?...
  6. GNOME 3 + Ubuntu 11.04
  7. 苹果mac需牢记的SSH命令
  8. 译注(1): 为什么大多数编程语言里,= 号被用来做赋值操作符?
  9. Moonbox v0.3beta 发布:Grid 全新重构,更快更解耦
  10. 鲸会务手把手教您线上年会抽奖怎么玩
  11. 2017年深度学习语义分割导读
  12. jquery更新后怎样在一个站点中使用两个版本号的jQuery
  13. cad线段总和lisp_autocadlisp统计多段线方法
  14. matlab 0106,matlab中的plotyy
  15. flappy bird用java实现_java实现Flappy Bird游戏源代码
  16. java会签_工作流引擎会签,加签,主持人,组长模式 专题讲解
  17. 直播实录|百度大脑EasyDL·NVIDIA专场 部署专家
  18. ClassFactory 无法供应请求的类 (异常来自 HRESULT:0x80040111 (CLASS_E_CLASSNOTAVAILABLE))
  19. Odoo权限详解一张图
  20. kepware rest服务器_KEPServerEX

热门文章

  1. 软件工程--螺旋模型详解
  2. “kuangbin带你飞”专题计划——专题一:简单搜索
  3. cpda数据分析师证书含金量高吗
  4. UGMT buildingEXODUS v4.0 WiN32.rar
  5. oracle数据库基础笔试题,Oracle数据库入门笔试试题及参考答案
  6. 记一次VS2015安装/卸载以及编译给定程序
  7. Chrome插件分享—不定期更新
  8. CAPL学习之路-SOME/IP相关函数
  9. scala下载新的版本号
  10. OpenGL天空盒skybox