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

article/2025/3/5 4:46:42

下载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


http://chatgpt.dhexx.cn/article/JQsajuj9.shtml

相关文章

学习写需求分析

笔者本身是软件工程专业出身&#xff0c;但是对如何写需求分析仍然是一知半解&#xff0c;拿到需求&#xff0c;仍然不知道如何下手&#xff0c;才能达到写需求分析的目的。 今天看到一篇文章&#xff0c;让我受益良多&#xff0c;同时参考此文&#xff0c;笔者也尝试写了一个…

Java Web 课程设计需求分析文档

企业办公软件管理需求分析 一、引言 1.1编写目的 软件需求分析是为了使用户和软件开发人员双方对该软件的初始规定有一个共同的理解,使之成为整个软件开发工作的基础.就本项目而言&#xff0c;编写需求分析报告的主要目的是明确系统各部分需要完成的功能&#xff0c;了解系统…

易语言游戏辅助开发原理分析

外挂现在大体上来讲分为三种&#xff0c;分别是模拟按键&#xff0c;WPE封包和内存挂。比如模拟键盘的&#xff0c;鼠标的&#xff0c;这种就叫做按键模拟&#xff0c;也叫脚本精灵&#xff1b;还有修改数据包的&#xff0c;这种就叫做WPE封包外挂&#xff0c;这种外挂相对而言…

Python新手开发的飞机大战

飞机大战import pygame import random import math # 数学模块# 初始化界面 pygame.init() # 设置窗口大小 windows pygame.display.set_mode((800, 600)) # 设置窗口标题 pygame.display.set_caption("小赵同学") # 引入图片 logo icon pygame.image.load(logo.j…

【Python游戏开发】百行Python代码开发出飞机大战小游戏,原来Python可以这么强大

大家好&#xff0c;今天给大家介绍一个小项目&#xff0c;只用一百行代码就可以开发出的游戏。 安装pygame 下载对应python版本的pygame 运行以下命令 创建Pygame窗口及响应用户输入 新建一个文件夹alien_invasion&#xff0c;并在文件夹中新建alien_invasion.py文件&#x…

终极PK | Python相较于Java的优势在哪里?

首先为避免引战&#xff0c;我要强调&#xff0c;“无论是Python还是Java都是目前主流的编程语言&#xff0c;没有好坏之分&#xff0c;有的只是应用场景不同&#xff0c;Python和Java都是世界上最好的语言&#xff01;” 接下来我们从语言本身、应用场景以及流行趋势等多个方…

【编程项目开源】仿微信飞机大战(Python版)

背景 前面已输出多个系列&#xff1a; 《十余种编程语言做个计算器》 《十余种编程语言写2048小游戏》 《17种编程语言10种排序算法》 《十余种编程语言写博客系统》 《十余种编程语言写云笔记》 《N种编程语言做个记事本》 《N种编程语言做个应用市场(appstore)》 《N种编程语…

Java太难,我选python?一个工具,带你开启新世界大门

前不久&#xff0c;4月份十大编程语言排行榜新鲜出炉。据TIOBE公布的数据来看&#xff0c;较上个月&#xff0c;TOP5基本没什么变化。Java稳居第一&#xff0c;随后是C、python、C、C#。 可是&#xff0c;有研究表明&#xff0c;十大难学编程语言中&#xff0c;Java排第3&…

用python编写飞机大战

博主介绍&#xff1a;是一名刚来到CSDN的小萌新 飞机大战 效果显示代码实现领取代码资源 效果显示 代码实现 领取代码资源 效果显示 代码实现 # -*- coding: utf-8 -*- import pygame # 导入pygame库 from pygame.locals import * # 导入pygame库中的一些常量 …

python云计算有哪些岗位,华为python教程下载

本篇文章给大家谈谈华为python语言通用编程规范&#xff0c;以及python云计算有哪些岗位&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 摘要&#xff1a;以 相反的顺序反转和处理字符串可能是编程中的一项常见任务。Python 提供了一组工具和技术&#xff0c…

java和python哪个功能更好,java和python哪个更有前景

大家好&#xff0c;本文将围绕java和python哪个更有发展前景展开说明&#xff0c;java和python哪个功能更好是一个很多人都想弄明白的事情&#xff0c;想搞清楚java和python哪个更有前景需要先了解以下几个事情。 java语言和python语言发展前景哪个好? 【导语】众所周知&#…

用Python写了一个网易云,太强了(附源码)

前言 今天的项目太强了&#xff0c;用 Python 整出一个网易云来&#xff0c;实现音乐自由&#xff01; 环境 Python3.6.8 PyCharm 依赖包 PyQt5&#xff1a;用于图形界面的开发 shelve&#xff1a;用于序列化对象 requests&#xff1a;爬取数据 功能展示 根据关键词&…

java和python哪个更有前景,java和python哪个有前途

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;java和python哪个更有前景&#xff0c;java和python哪个有前途&#xff0c;今天让我们一起来看看吧&#xff01; 前言 如今开发编程行业的发展迅猛&#xff0c;it技术的更新迭代十分快速&#xff0c;社会发展的方方面面…

【Python】Java工程师学Python之一分钟了解Python

文章目录 为何要学习PythonPython概述编译和运行过程Python主要应用的领域Python的特点Python优点与Java的区别最后 为何要学习Python 鲁迅先生说的好&#xff0c;不爱学习的开发不是好开发&#xff08;帮我压下先生的棺材板~&#xff09;&#xff0c;开个玩笑&#xff0c;主要…

Python---实现飞机大战源码

plane_main.py import pygame from plane_sprites import *class PlaneGame(object):"""飞机大战主游戏"""def __init__(self):print("游戏初始化")# 1.创建游戏的窗口self.screen pygame.display.set_mode(SCREEN_RECT.size)# 2.创…

Python项目——飞机大战!

文章目录 一、项目介绍——飞机大战实战步骤确认模块 —— pygame安装 pygame验证安装 二、pygame 快速入门项目准备1. 使用 pygame 创建图形窗口小节目标1.1 游戏的初始化和退出1.2 理解游戏中的坐标系案例演练 1.3 创建游戏主窗口1.4 简单的游戏循环 2. 理解 **图像** 并实现…

python和java哪个更有前景,python和java哪个更有前途

大家好&#xff0c;小编为大家解答python和java哪个好学,零基础的问题。很多人还不知道python和java哪个更容易入门&#xff0c;现在让我们一起来看看吧&#xff01; 进入编程行业是很多人的梦想&#xff0c;现在越来越多的人都想要通过培训的方式进入IT行业中&#xff0c;但是…

Python项目实战之《飞机大战游戏》

目录 一、Pygame库包简介 二、Pygame安装 三、项目开发思路 3.1前言 3.2飞机大战开发步骤 一、Pygame库包简介 Pygame是一个基于python的游戏开发库&#xff0c;它提供一系列的工具和接口&#xff0c;使开发人员能够轻松的创建各种类型的游戏&#xff0c;包括2D游戏和简单…

Java调用Python语言及第三方Python库

#pic_center 400x 系列文章&#xff1a; 文章目录 1、导入依赖 <!--Python&Java--><dependency><groupId>org.python</groupId><artifactId>jython-standalone</artifactId><version>2.7.2</version></dependency>…

Python 代码托管到码云平台,原来这么简单

什么是代码托管&#xff1f;代码托管又有什么好处&#xff1f; 场景1&#xff1a;我有2个电脑&#xff0c;公司一台&#xff0c;家里一台。我想在两台电脑上都进行同步开发。这时候我只要git push/pull一下就能够同步了&#xff0c;不再需要用U盘拷来拷去 场景2&#xff1a;我…