【Js】前端使用xlsx.full.min.js读取和导出excel表格数据

article/2025/3/5 1:05:20

文章目录

  • 简介
  • 使用js-xlsx的xlsx.full.min.js
    • 读取
    • 导出
  • 来源

简介

由SheetJS出品的js-xlsx是一款非常方便的只需要纯JS即可读取和导出excel的工具库,功能强大,支持格式众多,支持xls、xlsx、ods(一种OpenOffice专有表格文件格式)等十几种格式。本文全部都是以xlsx格式为例。

使用js-xlsx的xlsx.full.min.js

读取

excel 数据:
在这里插入图片描述
结果:
在这里插入图片描述
代码如下,需要引入xlsx.full.min.js下载地址
另有:CSDN Github 加速下载地址

<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport"content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>上传文件</title><script type="text/javascript" src='./xlsx.full.min.js'></script>
</head><body>文件:<br><input type="file" id="file"><br>
</body>
<script>//首先监听input框的变动,选中一个新的文件会触发change事件document.querySelector("#file").addEventListener("change", function () {//获取到选中的文件var file = document.querySelector("#file").files[0];var type = file.name.split('.');if (type[type.length - 1] !== 'xlsx' && type[type.length - 1] !== 'xls') {alert('只能选择excel文件导入');return false;}const reader = new FileReader();reader.readAsBinaryString(file);reader.onload = (e) => {const data = e.target.result;const zzexcel = window.XLS.read(data, {type: 'binary'});const result = [];for (let i = 0; i < zzexcel.SheetNames.length; i++) {const newData = window.XLS.utils.sheet_to_json(zzexcel.Sheets[zzexcel.SheetNames[i]]);result.push(...newData)}console.log('result', result)}});
</script>
</html>

导出

导出excel文件,主要是如何生成一个sheet,我们这里写一个最简单的csv转excel示例:

// csv转sheet对象
function csv2sheet(csv) {var sheet = {}; // 将要生成的sheetcsv = csv.split('\n');csv.forEach(function(row, i) {row = row.split(',');if(i == 0) sheet['!ref'] = 'A1:'+String.fromCharCode(65+row.length-1)+(csv.length-1);row.forEach(function(col, j) {sheet[String.fromCharCode(65+j)+(i+1)] = {v: col};});});return sheet;
}// 将一个sheet转成最终的excel文件的blob对象,然后利用URL.createObjectURL下载
function sheet2blob(sheet, sheetName) {sheetName = sheetName || 'sheet1';var workbook = {SheetNames: [sheetName],Sheets: {}};workbook.Sheets[sheetName] = sheet;// 生成excel的配置项var wopts = {bookType: 'xlsx', // 要生成的文件类型bookSST: false, // 是否生成Shared String Table,官方解释是,如果开启生成速度会下降,但在低版本IOS设备上有更好的兼容性type: 'binary'};var wbout = XLSX.write(workbook, wopts);var blob = new Blob([s2ab(wbout)], {type:"application/octet-stream"});// 字符串转ArrayBufferfunction s2ab(s) {var buf = new ArrayBuffer(s.length);var view = new Uint8Array(buf);for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;return buf;}return blob;
}

拿到上面的blob对象就可以直接下载了

/*** 通用的打开下载对话框方法,没有测试过具体兼容性* @param url 下载地址,也可以是一个blob对象,必选* @param saveName 保存文件名,可选*/
function openDownloadDialog(url, saveName)
{if(typeof url == 'object' && url instanceof Blob){url = URL.createObjectURL(url); // 创建blob地址}var aLink = document.createElement('a');aLink.href = url;aLink.download = saveName || ''; // HTML5新增的属性,指定保存文件名,可以不要后缀,注意,file:///模式下不会生效var event;if(window.MouseEvent) event = new MouseEvent('click');else{event = document.createEvent('MouseEvents');event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);}aLink.dispatchEvent(event);
}

所以,最终下载实现如下:

// 传入csv,执行后就会弹出下载框
function exportExcel(csv) {var sheet = csv2sheet(csv);var blob = sheet2blob(sheet);openDownloadDialog(blob, '导出.xlsx')}

其实上面这些代码都不需要我们手写,官方已经提供好了现成的工具类给我们使用,主要包括:

  • aoa_to_sheet:
    这个工具类最强大也最实用了,将一个二维数组转成sheet,会自动处理number、string、boolean、date等类型数据;
  • table_to_sheet: 将一个table dom直接转成sheet,会自动识别colspan和rowspan并将其转成对应的单元格合并;
  • json_to_sheet: 将一个由对象组成的数组转成sheet;

aoa_to_sheet示例:

var aoa = [['姓名', '性别', '年龄', '注册时间'],['张三', '男', 18, new Date()],['李四', '女', 22, new Date()]
];
var sheet = XLSX.utils.aoa_to_sheet(aoa);
openDownloadDialog(sheet2blob(sheet), '导出.xlsx');

table_to_sheet就更简单了,直接XLSX.utils.table_to_sheet($('table')[0])即可;

来源

js-xlsx 介绍
使用xlsx.full.min.js读取excel表格数据


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

相关文章

Vue使用js读取Excel数据

JS读取Excel数据 为什么要导入Excel数据&#xff0c;在所有的系统中几乎都会涉及到添加数据功能&#xff0c;添加数据有两种方法&#xff0c;第一种就是手动输入&#xff0c;一次只能输入一条数据。另一种就是通过导入excel文件实现多条数据的添加。 接下来我们就通过一个例子…

前端js读取excel工作表格数据

首先 需要两个js文件 jquery.min.js 线上地址 https://cdn.bootcss.com/jquery/3.2.1/jquery.js xlsx.core.min.js 线上地址 https://cdn.bootcss.com/xlsx/0.11.5/xlsx.core.min.js 还是建议弄到本地&#xff0c;因为如果线上地址发生变化就出问题了&#xff0c;搞到本地可以保…

使用xlsx.full.min.js读取excel表格数据

话不多说&#xff0c;直接上图 excel 数据是这样的 结果是这样的 代码如下&#xff0c;需要引入xlsx.full.min.js 下载地址 <!doctype html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport"cont…

js读取excel,xlsx,xls 表格,转成JSON数据

js读取excel,xlsx,xls 表格&#xff0c;转成JSON数据 使用 js-xlsx 插件&#xff1a;https://github.com/SheetJS/js-xlsx转为JSON数据后的效果图 欢迎参考 使用 js-xlsx 插件&#xff1a;https://github.com/SheetJS/js-xlsx HTML内容 创建input type为file 文件上传格式 绑…

JavaScript 技术篇 - js读取Excel文档里的内容实例演示,js如何读取excel指定单元格的内容,js将excel的内容转化为json字符串方法

JavaScript 读取 Excel 文档里的内容实例演示 第一章&#xff1a;准备① 下载 xlsx.full.min.js 支持包第二章&#xff1a;功能实现与使用演示① 实现代码② 使用效果演示③ 获取指定单元格的内容④ 将读取的 Excel 内容转化为 json 字符串 第一章&#xff1a;准备 ① 下载 xl…

JavaScript怎样读取本地Excel文件

在浏览器中&#xff0c;使用JavaScript读取本地文件内容&#xff0c;支持Excel表格(.xls、.xlsx)和文本文件(.txt)两种格式。 首先创建一个Excel表格&#xff0c;其中第一行为字段名。 在浏览器的项目管理器中&#xff0c;创建自定义变量步骤&#xff0c;并依次添加姓名…

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

js-xlsx 介绍 由SheetJS出品的js-xlsx是一款非常方便的只需要纯JS即可读取和导出excel的工具库&#xff0c;功能强大&#xff0c;支持格式众多&#xff0c;支持xls、xlsx、ods(一种OpenOffice专有表格文件格式)等十几种格式。本文全部都是以xlsx格式为例。 官方github&#x…

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

下载SheetJS文件 GitHub下载地址&#xff1a;https://github.com/SheetJS/sheetjs 下载之后打开其中的dist文件目录&#xff0c;能看到其中有xlsx.core.min.js和xlsx.full.min.js两个JS文件&#xff0c;使用其中一个文件就行&#xff0c;一般情况下使用xlsx.core.min.js就可以…

学习写需求分析

笔者本身是软件工程专业出身&#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;爬取数据 功能展示 根据关键词&…