工作项目中,表格的上传下载基本都是调取后端接口,把处理逻辑放在后端进行处理。那么纯前端js代码实现excel的上传下载是否可行?其实代码逻辑很简单,不过需要引用xlsx.js进行处理。下面是我自己写的一个关于国际化excel文件的上传下载功能。

HTML代码片段

<input type="file" onchange="dowmlodeExcel(this)">
<script type="text/javascript" src="https://unpkg.com/xlsx/dist/xlsx.core.min.js"></script>

获取本地excel表格,转化成数据,再进行数据整理

function dowmlodeExcel(source) {let file = source.files[0];let readExcelView = new FileReader();readExcelView.readAsBinaryString(file)  // 读取文件readExcelView.onload = (e) => {let data = e.target.result  // 获取传递的表格// 以二进制流方式读取到整份的excel 表格对象let workbook = XLSX.read(data, {type: 'binary'})let sheetData = []for (var sheet in workbook.Sheets) {  // 遍历每张表读取if (workbook.Sheets.hasOwnProperty(sheet)) {  // 判断文件是否是 excel 文件// 对表格的内容进行处理sheetData = sheetData.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet]));break;}}// 补全未翻译的(重复中文)sheetData.map((item) => {const index = sheetData.findIndex((k) => (k.Chinese === item.Chinese) &&  k.English)if (index > 0) {item.English = sheetData[index].English}return item})// 下载数据变更后的文件到本地downLoadExcel(sheetData,'翻译')}}

把整理过后的数据生成新的excel,并下载在本地

function downLoadExcel(data, fileName){//定义表头let str = 'key,Chinese,English\n';//增加\t为了不让表格显示科学计数法或者其他格式for(let i = 0 ; i < data.length ; i++ ){for(let item in data[i]){str+=`${data[i][item] + '\t'},`;          }str+='\n';}//解决中文乱码问题let url = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(str);//创建a标签let link = document.createElement("a");link.href = url;link.download = `${fileName || '表格数据'}.xls`;document.body.appendChild(link);link.click();// 移除a标签document.body.removeChild(link);
}

以上的代码就可以完成一个简单的excel表格上传、下载的功能。接下来就找一个本地excel表格试一试吧!

关于纯前端excel上传、下载功能相关推荐

  1. 纯前端实现上传下载(后端存取json)xlsx

    后端存取json,通过 xlsx 依赖转换 上传:前端通过上传模板文件将上传组件(upload)返回的文本流解析成json数据,传给后端 下载:获取后端json转换成文件格式 下载依赖 npm ins ...

  2. shp文件纯前端的上传、解析、编辑、下载

    本文主要讲述一种体量较小的shp文件纯前端的上传.解析.编辑.下载的技术流程,适用于要素量少的shp文件修改操作. 准备工作 下载一下几个包,详细用法请见结尾参考. npm install file- ...

  3. 项目_功能模块_基于Spring Boot的文件上传下载功能的设计与实现

    文章目录 基于Spring Boot的文件上传下载功能模块的设计与实现 1.前言 2.技术栈 3.关键源码 4.实现效果 4.1.登录 4.2.文件列表 4.3.上传文件测试 4.3.1.测试图片 4 ...

  4. 教你如何实现c#文件上传下载功能

    简单介绍一下c#文件上传下载功能实现. NuGet 安装SqlSugar Model文件下新建 DbContext 类 public class DbContext {public DbContext ...

  5. JavaWeb实现文件上传下载功能实例解析

    转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...

  6. 文件的上传下载功能的实现(包括进度条)[telerik控件]

    文件的上传下载功能的实现(包括进度条) 1.准备工作 首先我们需要Telerik控件,数据库,上传文件文件夹. Telerik控件: RadUpload.RadProgressManager.RadP ...

  7. ssm框架验证码图片加载不出_基于SSM框架的文件图片上传/下载功能实现

    前一段时间很多做毕业设计的同学问:如何写图片和文件的上传下载功能,今天正好有时间,所以就做了一个案例,详细的讲解这个功能. 框架结构: 对于很多做过开发的而言,上传功能肯定都用过,而且用到的场景很多, ...

  8. SpringBoot2.x集成mongoDB4.0实现音频文件的上传下载功能

    最近项目要用到文件上传下载功能,但是这些音频文件都很大,放到关系型数据库就不太好了(其实是太不好了),占内存不说还慢的要死,所以考虑使用分布式文件系统或者非关系型数据库来实现.由于分布式文件系统没有用 ...

  9. java歌曲上传下载功能实现,Java上传下载功能的实现详解

    上传下载是很简单的功能,但是每次用的时候还是要查,这里整理一下 前台: 提交 主要注意: enctype="multipart/form-data" method="po ...

最新文章

  1. 在CDF可以插入特殊字符编码
  2. 单向链表的有关操作(链式存储结构)
  3. mysql 连续签到天数_新版签到活动明天上线,福利活动抢鲜看~
  4. HDU 4336 Card Collector(容斥原理+状态压缩)
  5. 《Reids 设计与实现》第六章 数据库
  6. 懒惰的人有福了——VS代码段编辑器SnippetEditor 可对vs所有代码段进行编辑和创建包括C#\J#\VB.NET等...
  7. Python中通过cx_Oracle访问数据库遇到的问题总结
  8. 在xcode中用oc实现计算器
  9. 英超俱乐部面临网络威胁,球队一起训练防御网络攻击
  10. Ubuntu下vsftpd - 虚拟账户配置
  11. 2021高考杭二中成绩查询,杭二中公布了首张高考成绩通报 北大清华51人
  12. 若依框架使用自带的方法进行图片上传
  13. implicit declaration of function 警告解决方法 (函数的隐式说明)
  14. 网络调试助手的使用 调试TCP,UDP
  15. 一缕黑暗中的火光-----------活动图--------------优雅的建模语言
  16. 文章分类标签数据库设计
  17. HALCON_根据XLD轮廓 把图像摆正_二
  18. 20175227张雪莹 2018-2019-2 《Java程序设计》第六周学习总结
  19. DsMall商城新增短信宝短信接口
  20. Linux 内核(Kernel)组成分析

热门文章

  1. FineReport的数据库
  2. 虚幻Material
  3. Python实现投影法分割图像(一)
  4. python使用垂直投影法进行字符串分割
  5. matlab怎么把scop图形用plot,怎么把ulink出来的数据导出来
  6. 文本数据分析:文本挖掘还是自然语言处理?
  7. 图片大小如何调整到10k?图片压缩到指定大小怎么弄?
  8. 数据库实验2 数据库安全性定义与检查
  9. 数据库中锁机制的学习
  10. 网易云音乐登录报错 status: 400, body: { code: -460, message: ‘网络太拥挤,请稍候再试!‘ } 解决