html json 导出Excel
<!DOCTYPE html>
<html> <head>
<meta charset="UTF-8">
<title></title>
<script src="http://oss.sheetjs.com/js-xlsx/xlsx.full.min.js"></script>
</head> <body>
<button id="button">导出Excel</button> <script>
var json = [
{ //测试数据
"保质期临期预警(天)": "adventLifecycle",
"商品标题": "title",
"建议零售价": "defaultPrice",
"高(cm)": "height",
"商品描述": "Description",
"保质期禁售(天)": "lockupLifecycle",
"商品名称": "skuName",
"商品简介": "brief",
"宽(cm)": "width",
"阿达": "asdz",
"货号": "goodsNo",
"商品条码": "skuNo",
"商品品牌": "brand",
"净容积(cm^3)": "netVolume",
"是否保质期管理": "isShelfLifeMgmt",
"是否串号管理": "isSNMgmt",
"商品颜色": "color",
"尺码": "size",
"是否批次管理": "isBatchMgmt",
"商品编号": "skuCode",
"商品简称": "shortName",
"毛重(g)": "grossWeight",
"长(cm)": "length",
"英文名称": "englishName",
"净重(g)": "netWeight",
"商品分类": "categoryId",
"这里超过了": 1111.0,
"保质期(天)": "expDate"
} ,{ //测试数据
"保质期临期预警(天)": "adventLifecycle22",
"商品标题": "title22",
"建议零售价": "defaultPrice2",
"高(cm)": "height2",
"商品描述": "Description2",
"保质期禁售(天)": "lockupLifecycle2",
"商品名称": "skuName2",
"商品简介": "brief2",
"宽(cm)": "width2",
"阿达": "asdz2",
"货号": "goodsNo2",
"商品条码": "skuNo2",
"商品品牌": "brand2",
"净容积(cm^3)": "netVolume2",
"是否保质期管理": "isShelfLifeMgmt2",
"是否串号管理": "isSNMgmt2",
"商品颜色": "color2",
"尺码": "size2",
"是否批次管理": "isBatchMgmt2",
"商品编号": "skuCode2",
"商品简称": "shortName2",
"毛重(g)": "grossWeight2",
"长(cm)": "length2",
"英文名称": "englishName2",
"净重(g)": "netWeight2",
"商品分类": "categoryId2",
"这里超过了": "1111.02",
"保质期(天)": "expDate2"
}]; document.getElementById("button").onclick = function(){
downloadExl(json, 'xlsx')
} var tmpDown; //导出的二进制对象
function downloadExl(json, type) {
var json = JSON.parse(JSON.stringify(json));
var tmpdata = json[0];
json.unshift({});
var keyMap = []; //获取keys
//keyMap =Object.keys(json[0]);
for (var k in tmpdata) {
keyMap.push(k);
json[0][k] = k;
}
var tmpdata = [];//用来保存转换好的json
json.map((v, i) => keyMap.map((k, j) => Object.assign({}, {
v: v[k],
position: (j > 25 ? getCharCol(j) : String.fromCharCode(65 + j)) + (i + 1)
}))).reduce((prev, next) => prev.concat(next)).forEach((v, i) => tmpdata[v.position] = {
v: v.v
});
console.log(json);
console.log(tmpdata); var outputPos = Object.keys(tmpdata); //设置区域,比如表格从A1到D10
var tmpWB = {
SheetNames: ['mySheet','my'], //保存的表标题
Sheets: {
'mySheet': Object.assign({},
tmpdata, //内容
{
'!ref': outputPos[0] + ':' + outputPos[outputPos.length - 1] //设置填充区域
}),
'my': Object.assign({},
tmpdata, //内容
{
'!ref': outputPos[0] + ':' + outputPos[outputPos.length - 1] //设置填充区域
}), }
};
console.log(tmpWB,'twb')
tmpDown = new Blob([s2ab(XLSX.write(tmpWB,
{bookType: (type == undefined ? 'xlsx':type),bookSST: false, type: 'binary'}//这里的数据是用来定义导出的格式类型
))], {
type: ""
}); //创建二进制对象写入转换好的字节流 var href = URL.createObjectURL(tmpDown); //创建对象超链接
//模拟点击下载
var aDownLoad = document.createElement("a");
aDownLoad.href = href;
aDownLoad.download = 'href.xlsx';
aDownLoad.click(); setTimeout(function() {
URL.revokeObjectURL(tmpDown); //用URL.revokeObjectURL()来释放这个object URL
}, 100);
} function 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;
}
// 将指定的自然数转换为26进制表示。映射关系:[0-25] -> [A-Z]。
function getCharCol(n) {
let temCol = '',
s = '',
m = 0
while (n > 0) {
m = n % 26 + 1
s = String.fromCharCode(m + 64) + s
n = (n - m) / 26
}
return s
}
</script>
</body> </html>
html json 导出Excel的更多相关文章
- 前端 json 导出 excel
参考:https://blog.csdn.net/abel_yang/article/details/78684786 在github上有大神提供现成的插件,非常感谢 https://cuikangj ...
- 推荐一款好用的json导出execl格式的文件的js工具-JsonExportExcel
<html> <head> <meta charset="utf-8"> <title>json导出Excel</title& ...
- Python导出Excel为Lua/Json/Xml实例教程(三):终极需求
相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 Python导出E ...
- Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验
Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出E ...
- Python导出Excel为Lua/Json/Xml实例教程(一):初识Python
Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...
- 导出excel时,以form方式提交json数据
今天在写项目时写到一个excel的导出,开始想用ajax请求后台后导出,但发现ajax会有返回值,而且ajax无法直接输出文件,而后台的excel导出方法已经封装好,不方便修改. 就改用了提交的方式f ...
- js前端导出excel:json形式的导出
第一中形式的导出:主要是表头对应主体数据,json形式的导出 js库文件名称 : table2excel.js这个js库文件是网上找的,并且自己根据自己业务需求把内容改了一下复制到 table2exc ...
- js导出到word、json、excel、csv
tableExport.js ///*The MIT License (MIT) //Copyright (c) 2014 https://github.com/kayalshri/ //Permis ...
- 导出Excel/Pdf/txt/json/XML/PNG/CSV/SQL/MS-Word/ Ms-Powerpoint/等通过tableExport.js插件来实现
首先去我的云盘下载需要的js: 链接:https://pan.baidu.com/s/13vC-u92ulpx3RbljsuadWw 提取码:mo8m 页面代码: <!DOCTYPE html& ...
随机推荐
- C++中输出字符到文本文档
#include <iostream> #include <fstream> //ofstream类的头文件 using namespace std; int main() { ...
- stringify在苹果电脑下的值不能为空
sessionStorage.channel = JSON.stringify( );苹果的safari不接受stringify里面为空 火桑飘零ご 2018/1/25 20:21:49 wind ...
- xdoj新生现场赛1269——带有限制条件的bfs 寻找最短路径
bfss是解决最短路径的强大武器 (尝试dfs寻找最短路径 -(7*7)就会爆炸) 例题1 ccf 201604-4 游戏 问题描述 小明在玩一个电脑游戏,游戏在一个n×m的方格图上进行,小明控制 ...
- root/base/stem概念
The verb root (or base form): 1.is the same as the infinitive不定式 (e.g., to dive, to jump, to wonder) ...
- lnmp架构、mysql的安装、php的安装、nginx相关
1.lnmp架构 2.mysql的安装: mysql5.6自动安装脚本: yum install perl-Data-Dumper.x86_64 libaio.x86_64 libaio-devel. ...
- hdu2594 Simpsons’ Hidden Talents LCS--扩展KMP
Homer: Marge, I just figured out a way to discover some of the talents we weren’t aware we had.Marge ...
- LeetCode - Number of Distinct Islands
Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land) conn ...
- Top PG Clustering HA Solutions for PostgreSQL
转自:https://severalnines.com/blog/top-pg-clustering-ha-solutions-postgresql If your system relies on ...
- golang 版本 gearman 试用
g2 是golang 版的gearman 实现,包含了server (支持leveldb,以及metrics).client 代码.worker 代码 使用上还是很方便的,同时部署也比较简单,结合do ...
- 怎样优化app,看Facebook怎样做
周四,Facebook Engineering blog 发表了一篇名为<Improving Facebook on Android>博文.博文从四个方面(Performance,Data ...