第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 使用JavaScript实现纯前端读取excel文件并与后台进行交互

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

时间:2021-04-24 07:59:26

相关推荐

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

下载SheetJS文件

GitHub下载地址:/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拉!

参考文档 /liuxianan/p/js-excel.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。