博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js导出excel
阅读量:7102 次
发布时间:2019-06-28

本文共 2463 字,大约阅读时间需要 8 分钟。

js导出Excel的方法

利用html的table表格的格式书写想要的excel格式 获取table的内容并组装成一个xls格式的字符串 利用Blob对象生成一个xls格式的文件 利用a标签的download属性创建文件名,并下载到本地

举例:

  
Document
学生信息
名字 性别 年龄 班级
小明 19 1班
小黄 20 2班
老王 29 3班

来看看在浏览器显示的效果如下,在这里我是给table增加了样式的

 

=======================================            解释如下            ==================================================================

先写一个正常的html表格

  
Document
学生信息
名字 性别 年龄 班级
小明 19 1班
小黄 20 2班
老王 29 3班

来看看在浏览器显示的效果如下,在这里我是给table增加了样式的:

浏览器显示效果

获取table的内容装成一个xls格式的字符串

接下来就是获取table的html内容了,里面包括标签的class或id等。

var oHtml = document.getElementsByClassName('tableA')[0].outerHTML;

这里将table和style组成一个html,

【附上es6字符串模板链接[es6字符串模板][1]】
[1]: "es6字符串模板"

// 这里我是用了es6的字符串语法``和${},对es6不熟悉的同学可以去查一下。// 有没有发现我这里的样式就是和HTML上的style复制下来的,  var excelHtml = `   
${oHtml} `;

生成xls文件并通过a标签下载到本地

前面的准备工作就差不多了,接下来就是将字符串转成xls文件了,这里主要利用Blob对象和URL.createObjectURL() 方法

  • Blob对象表示不可变的类似文件对象的原始数据。Blob表示不一定是JavaScript原生形式的数据。 File 接口基于Blob,继承了 blob的功能并将其扩展使其支持用户系统上的文件。
  • URL.createObjectURL() 静态方法会创建一个 DOMString,其中包含一个表示参数中给出的对象的URL。这个 URL 的生命周期和创建它的窗口中的 document 绑定。这个新的URL 对象表示指定的 File 对象或 Blob 对象。

Blob 构造函数用法举例(生成一个json文件):

var debug = {hello: "world"};var blob = new Blob([JSON.stringify(debug, null, 2)],  {type : 'application/json'});

同样道理利用第二个步骤的字符串生成Excel

var excelBlob = new Blob([excelHtml], {type: 'application/vnd.ms-excel'})

 

最后一步就是通过a标签下载到本地了,下载前可以利用a标签的download属性命名

// 创建一个a标签var oA = document.createElement('a');// 利用URL.createObjectURL()方法为a元素生成blob URLoA.href = URL.createObjectURL(excelBlob);// 给文件命名oA.download = '学生名单.xls';

最后生成的xls效果如下:

js导出excel效果图
可以看出和浏览器的样式除了涉及到px的会有偏差,其它设置都是生效的,只要微调一下就可以达到想要的效果了

ps:因为权限问题,生成的excel的格式只能为.xls而且每次打开都会弹窗询问。所以建议打开后另存一份excel

转自:

https://www.cnblogs.com/suyuanli/p/7945102.html

 

转载于:https://www.cnblogs.com/SRH151219/p/11076290.html

你可能感兴趣的文章
Laravel 单元测试-模拟认证的用户
查看>>
如何面试寻找优秀的区块链以太坊工程师
查看>>
“风口”上的二次元手游该如何立足
查看>>
“成也地推,败也地推”,线下3C分期消费前景难料?
查看>>
记一次网络模块的小规模重构
查看>>
对中国国家气象局进行api数据分析
查看>>
深入 Nginx 之配置篇
查看>>
js小数计算的问题,为什么0.1+0.2 != 0.3
查看>>
使用Spring Boot开发者工具进行自动重启和页面自动刷新
查看>>
Android组件化专题-路由动态注入跳转参数以及获取其他模块的fragment
查看>>
保存图片到SD卡
查看>>
iOS蓝牙开发
查看>>
DRDS分布式SQL引擎—执行计划介绍
查看>>
iOS中round/ceil/floorf函数的应用
查看>>
Go 学习笔记(12):map
查看>>
iOS 获取手机型号,XR,XS,MAX
查看>>
一文搞定并发面试题
查看>>
【git】前端使用git分支的开发流程
查看>>
222. Count Complete Tree Nodes
查看>>
ESMap+Html5+SpringBoot+FastDFS实现导航导购App
查看>>