纯JS将json数据转成Excel并导出

采用JS-XLSX这个简单的Javascript库来读取和写入Excel表格文件,并且能够支持最新版本的XLSX文件

一、node 环境 安装XLSX库

1、with npm

$ npm install xlsx

2、node 读取文件

if(typeof require !== 'undefuned')

var XLSX = require('XLSX')

二、直接引入XLSX库

三、导入JSON数据

var dataSource = null;

var fileName = '';

//1、importDataSource() 方法用来获取json数据

function importDataSource(obj) {

//2、obj.files[0]获得onchange文件,name获得文件名作为Excel的文件名

fileName = obj.files[0].name.split('.')[0];

//3、创建FileReader对象,将文件内容读入内存,通过一些api接口,可以在主线程中访问本地文件

var reader = new FileReader();

//4、readAsText(file) 异步按字符读取文件内容,结果用字符串形式表示

reader.readAsText(obj.files[0]);

var that = this

//5、onload事件,当读取操作成功完成时调用

reader.onload = function() {

//读取完毕后输出结果 为字符串 此时需要转成json对象

that.dataSource = JSON.parse(this.result)

}

}

FileReader()对象

方法:

1、abort():void 终止文件读取操作

2、readAsArrayBuffer(file):void 异步按字节读取文件内容,结果用ArrayBuffer对象表示(二进制缓存区) 将二进制数据存放在其中,大小与源文件一样,通过此方式,可以直接在网络中传输二进制内容

3、readAsBinaryString(file):void 异步按字节读取文件内容,结果为文件的二进制串 与上个方法不同的是 readAsBinaryString读取后的内容被编码为字符,大小会受到影响,不适合直接传输,不推荐使用

4、readAsDataURL(file):void 异步读取文件内容并进行base64编码后输出,结果用data:url的字符串形式表示

事件:

1、onabort 当读取操作被中止时调用

2、onerror 当读取操作发生错误时调用

3、onload 当读取操作成功完成时调用

4、onloadend 当读取操作完成时调用,不管是成功还是失败

5、onloadstart 当读取操作将要开始之前调用

6、onprogress 在读取数据过程中周期性调用

四、将json数据 导出Excel

var wopts = {

bookType: 'xlsx',

bookSST: false,

type: 'binary'

};

var workBook = {

SheetNames: ['Sheet1'],

Sheets: {},

Props: {}

};

function json2Excel() {

//1、XLSX.utils.json_to_sheet(data) 接收一个对象数组并返回一个基于对象关键字自动生成的“标题”的工作表,默认的列顺序由使用Object.keys的字段的第一次出现确定

//2、将数据放入对象workBook的Sheets中等待输出

workBook.Sheets['Sheet1'] = XLSX.utils.json_to_sheet(dataSource)

//3、XLSX.write() 开始编写Excel表格

//4、changeData() 将数据处理成需要输出的格式

saveAs(new Blob([changeData(XLSX.write(workBook, wopts))], {type: 'application/octet-stream'}))

}

function changeData(s) {

//如果存在ArrayBuffer对象(es6) 最好采用该对象

if (typeof ArrayBuffer !== 'undefined') {

//1、创建一个字节长度为s.length的内存区域

var buf = new ArrayBuffer(s.length);

//2、创建一个指向buf的Unit8视图,开始于字节0,直到缓冲区的末尾

var view = new Uint8Array(buf);

//3、返回指定位置的字符的Unicode编码

for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;

return buf;

} else {

var buf = new Array(s.length);

for (var i = 0; i != s.length; ++i) buf[i] = s.charCodeAt(i) & 0xFF;

return buf;

}

}

XLSX.utils

1、XLSX.utils.table_to_sheet 我们常用的还有这个 将table数据转成Excel表格,需要一个表DOM元素并返回一个类似于输入表的工作表。 数字被解析。 所有其他数据将作为字符串存储。

2、Uint8Array 8位无符号整数,长度1个字节

3、ArrayBuffer是一块内存,比如var buf = new ArrayBuffer(1024), 就等于开辟了一块1kb大小的内存,但是不能通过buf[0]=12,来进行赋值,如果想操作内存块中的数据,需要通过var init8 = new Int8Array(buf)然后通过int8[0] = 12来操作

4、如果你从XHR、file API、canvas等读取到一大串字节流,采用ArrayBuffer比较好,会配合一些api来增强二进制的处理能力

5、ArrayBuffer作为内存区域,可以存放多种类型的数据,不同的数据有不同的存储方式,Uint8Array就是其中一种,8表示这种数据类型占据的字节数。这里使用8来转换是因为数据类型最小占1个字节,可以存储字母、数字、汉字、字符等

6、s.charCodeAt(i) & 0xFF:&0xff这个是考虑到计算机内的存储都是利用二进制的补码进行存储的。对于正数(00000001),原码来说,首位表示符号位,反码 补码都是本身。对于负数(10000001),原码来说,反码是对原码除了符号位之外做取反运算,即(11111110),补码是对反码作+1运算即(11111111),这样做其实就是想保持二进制的补码的一致性 (详解:https://www.cnblogs.com/think...

五、将文件输出并下载

function saveAs(obj, fileName) {//当然可以自定义简单的下载文件实现方式

var tmpa = document.createElement("a");

tmpa.download = fileName || "下载";

tmpa.href = URL.createObjectURL(obj); //绑定a标签

tmpa.click(); //模拟点击实现下载

setTimeout(function () { //延时释放

URL.revokeObjectURL(obj); //用URL.revokeObjectURL()来释放这个object URL

}, 100);

}

模拟下载 a标签添加download属性

html js把json转化为excel,json转换Excel相关推荐

  1. behave结果转化为cucumber结果,主要用于将behave.json转化为cucumber.json

    前言 该python库主要用于将behave框架生成的behave.json转化为cucumber.json,使用cucumber的报告插件可以对behave生成结果进行解析,展示.为什么我会单独进行 ...

  2. NPOI写Excel,Microsoft.Office.Interop.excel.dll 转换Excel为PDF

    首先要引用NPOI动态库和Microsoft.Office.Interop.excel.dll (Microsoft.Office.Interop.excel.dll 下载链接 ,下载以后解压文件,把 ...

  3. excel转json_如何一键把json转化为Excel json2excel

    如何把json转化为Excel json2excel JSON是码农们常用的数据格式,轻且方便,而直接手敲JSON却是比较麻烦和令人心情崩溃的(因为重复的东西很多),并且现在很多普通用户也需要把jso ...

  4. excel文件中的数据转化为json格式并输出json文件

    1:需求: 将excel中的数据获取出来,转化为json格式,之后输出到.json文件中. 2:步骤: (1): 将excel中的数据获取出来,使用jsonObject转化为json格式字符串 (2) ...

  5. js把string转化为json

    最近遇到一个前端错误: Unexpected token i in JSON at position 1     at JSON.parse (<anonymous>) 后台在网上找到答案 ...

  6. Node.js(nodejs)对本地JSON文件进行增、删、改、查操作(轻车熟路)

    项目结构 index.js //必须要安装否则就别想运行了❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤ //npm ...

  7. js实现json格式化,以及json校验工具的简单实现

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, ...

  8. node-js——将excel表格转换成json文件

    文章目录 将excel表格转换成json文件 步骤 一.引用nodejs的xlsx模块,读取表格的数据 二.引入fs模块,创建文件并写入 三.写一个bat脚本,双击自动执行nodejs文件 示例文件下 ...

  9. JSON格式化 动态生成表格 表格转置 行列转换 Excel导出

    先看效果 初始化: JSON格式化 : 生成表格-方式1 : 生成表格-方式2 : Excel导出 需要行求和.列求和功能的查看 JSON格式化 动态生成表格 表格转置 行列转换 Excel导出 行求 ...

  10. php使用 js格式解析,php 无限级数据JSON格式及JS解析_PHP教程

    Flash需要JSON格式的数据,于是,就有了如下代码:(PHP实现,C#类似,JSON库自己去下吧~~) 复制代码 代码如下: //–查询用户下线信息,返回JSON,用于flash if(!empt ...

最新文章

  1. 尹伊:Datawhale做的一件事
  2. weblogic公布的项目用途myeclipse正常启动,点击startWeblogic.cmd报错解决方案
  3. 机会!搞科研的同伴注意了,再忙也要看一下!
  4. Thymeleaf 基本用法总结
  5. 如何使用三态工作流 - [MOSS 2007应用日记]
  6. 顺序容器之vector
  7. git 查看远程仓库地址
  8. 深入理解equals和hashCode关系和区别
  9. 输入5个学生的名字(英文),使用冒泡排序按从大到小排序。 提示:涉及到字符串数组,一个字符串是一个一维字符数组;一个 字符串数组就是一个二维字符数组。...
  10. bigdecimal不保留小数_为什么 0.1 + 0.2 = 0.3,原来你不知道
  11. python中的commands模块
  12. Keil MDK5使用
  13. 中国古代文化常识【3】
  14. 三代测序数据分析实战
  15. 39岁阿里P9提前退休,资产1.5亿,北京4套房!职场人的离职悲喜各不相同
  16. TweenMax.js
  17. 程序开发语言之兵器谱排名
  18. win10 nas搭建_Windows Server 2019搭建NAS的一些总结
  19. PIC18f46j50单片机里SPI部分的一点程序
  20. 在win10上通过usb连接树莓派

热门文章

  1. java修改文件的名称_Java修改文件名称
  2. 3个极品在线PDF转换成WORD服务网站,比软件给力!
  3. [转]关于PSP的3.52 M33-2自制系统七大热点问题
  4. 因子分析模型 - 案例按步骤详解 - (SPSS建模)
  5. 码支付源码最新版_码支付源码,云端已本地化,ck协议本地化,完全脱离云端控制
  6. (22) 基于动态时空图卷积神经网络的交通流预测
  7. 【交通流理论拟合】-速度流量拟合
  8. Multisim入门
  9. 阿里大淘系模型治理阶段性分享
  10. 最新谷歌本地搜索api