JS 在页面上直接将json数据导出到excel,支持chrome,edge,IE10+,IE9,IE8,Safari,Firefox
JS 在页面上直接将json数据导出到excel,支持chrome,edge,IE10+,IE9,IE8,Safari,Firefox
<html>
<head>
</head>
<body>
<script type="text/javascript">
function jsexport(){
var jsonData = [{name:"张三", sex:"男", age:46},{name:"李四", sex:"男", age:20},{name:"王五", sex:"男", age:33},{name:"赵六", sex:"男", age:80}];
var GridData = JSON.parse(JSON.stringify(jsonData))
JSONToCSV(GridData, "UserReport.csv", true);
}
var blob;
var filename;
function c(){
window.navigator.msSaveOrOpenBlob(blob, filename);
}
function JSONToCSV(JSONData, ReportName, ShowLabel) {
var arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData;
var CSV = '';
if (ShowLabel) {
var row = "";
for (var index in arrData[0]) {
row += index + ',';
}
row = row.slice(0, -1);
CSV += row + '\r\n';
}
for (var i = 0; i < arrData.length; i++) {
var row = "";
for (var index in arrData[i]) {
row += '"' + arrData[i][index] + '",';
}
row.slice(0, row.length - 1);
//add a line break after each row
CSV += row + '\r\n';
console.log(CSV);
}
if (CSV == '') {
alert("数据有错误");
return;
}
var link = document.createElement("a");
link.id="lnkDwnldLnk";
link.name="lnkDwnldLnk";
link.setAttribute("style", "display:none");
var ifdo = document.createElement("iframe");
ifdo.id="ifdiframe";
ifdo.name="ifdiframe";
ifdo.setAttribute("style", "display:none");
document.body.appendChild(link);
document.body.appendChild(ifdo);
var csv = CSV;
try
{
blob = new Blob([csv], { type: 'text/txt' });
}
catch (e)
{
blob = [csv];
}
var csvUrl = "";
filename = ReportName;
if (window.navigator.userAgent.indexOf("Chrome") >= 1 || window.navigator.userAgent.indexOf("Safari") >= 1) {
csvUrl = window.webkitURL.createObjectURL(blob);
link.setAttribute("download", filename);
link.setAttribute("href", csvUrl);
link.click();
}
if (window.navigator.userAgent.indexOf("Firefox") >= 1) {
csvUrl = window.URL.createObjectURL(blob);
link.setAttribute("download", filename);
link.setAttribute("href", csvUrl);
link.click();
}
else {
if(window.navigator.msSaveOrOpenBlob) { //IE>=10
link.addEventListener('click', function() {
window.navigator.msSaveOrOpenBlob(blob, filename);
});
link.click();
} else { //支持IE9、IE8; IE7及以下暂不支持,因为不支持JSON
var ifd = document.getElementById('ifdiframe').contentDocument;
ifd.open('text/plain', 'replace');
ifd.write('\r\n\r\n' + csv);
ifd.close();
ifd.execCommand('SaveAs', null, filename);
}
}
document.body.removeChild(link);
document.body.removeChild(ifdo);
}
</script>
<input type="Button" id="bygen" value="导出" onclick="jsexport()"/ >
<br>
<a id="mydownload" name="mydownload" href="#" >导出</a>
</html>
纯原生js代码,本人原创,未经许可可随意转载
JS 在页面上直接将json数据导出到excel,支持chrome,edge,IE10+,IE9,IE8,Safari,Firefox的更多相关文章
- Json数据导出生成Excel
最近在做一个导入导出Excel的功能,导出其他类型的文件都比较熟悉,但是导入跟导出一个Excel还是稍微特殊点.根据这次的经验,写了个导出的小样例. 总体思路就是json数据的key,value跟Ex ...
- C#大量数据导出到Excel(转)
工作过程中经常会用到将数据导出到Excel中,一般情况下需要导出的数据都是几百几千条或者上万条,这都没有什么问题,但有时候会遇到特殊的需求,客户要求把几十万条甚至上百万条的数据导出到Excel中,这就 ...
- 使用js在页面上新建文件夹
使用js在页面上新建文件夹 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- Progress.js – 为页面上的任意对象创建进度条效果
Progress.js 是一个 JavaScript 和 CSS3 的库,它帮助开发人员为网页上的每个对象创建和管理进度条效果.你可以设计自己的模板,进度条或者干脆定制. 您可以使用 Progress ...
- js如何把字符串转换成json数据的方法
js如何把字符串转换成json数据的方法 function strtojson(str){ var json = eval('(' + str + ')'); return json; } 方法二 f ...
- Nginx下HTML页面POST请求静态JSON数据返回405状态
在浏览器访问HTML页面,发现一些静态JSON数据没有显示,F12查看,如下图所示: 可以看到请求方式为POST 将请求链接复制在浏览器地址栏访问,可以正常请求到数据 F12查看,可以看到请求方式为G ...
- 如何使用 js 检测页面上全局变量
如何使用 js 检测页面上全局变量 js 检测页面全局变量脚本 <!DOCTYPE html> <html lang="zh-Hans"> <head ...
- json数据导出excel
最近做的一个项目涉及到把数据导出到excel里面,网上找来找去,最终找到两种办法,废话不多说了 第一种: 拿到表格的id就可以抓取表格的数据,导出到excel,这种方式简单粗暴,引入这两个插件即可. ...
- asp.net 将repeater上数据导出到excel
1,首先得到一个DataTable public DataTable GetTable(string sql) { SqlConnnection con=new SqlConnection(Confi ...
随机推荐
- spring boot jpa 多条件组合查询带分页的案例
spring data jpa 是一个封装了hebernate的dao框架,用于单表操作特别的方便,当然也支持多表,只不过要写sql.对于单表操作,jpake可以通过各种api进行搞定,下面是一个对一 ...
- java实现下载excel功能
1,获取服务器现有excel文件 public List<Object[]> getObject(String filePath){ log.info("**文件路径为:**&q ...
- java基础-day22
第11天 多线程 今日内容介绍 u 多线程概述 u 线程实现 u 多线程安全问题产生 & 解决方案 第1章 多线程概述 学习多线程之前,我们先要了解几个关于多线程有关的概念. A ...
- noip第12课作业
1. 输出低于班级平均分的学生信息 [问题描述] 输入N个学生的姓名和语文.数学的得分,求平均分低于班级平均分的学生,将其信息全部输出.分数相同的按输入先后输出. 输入格式:第1行,有一个整数N ...
- IntelliJ IDEA配置Tomcat(完整版教程)
查找该问题的童鞋我相信IntelliJ IDEA,Tomcat的下载,JDK等其他的配置都应该完成了,那我直接进入正题了. 1.新建一个项目 2.由于这里我们仅仅为了展示如何成功部署Tomcat,以及 ...
- spark图解
导语 spark 已经成为广告.报表以及推荐系统等大数据计算场景中首选系统,因效率高,易用以及通用性越来越得到大家的青睐,我自己最近半年在接触spark以及spark streaming之后,对spa ...
- ASP.NET Web API 框架研究 Controller创建 HttpController 类型解析 选择 创建
上一篇介绍了HttpController的一些细节,接下来说下HttpController 类型解析.选择和创建.生产HttpController实例的生产线如下图: 一.涉及的类及源码分析 涉及的类 ...
- What mind mapping software applications do you recommend.
选自 https://members.iqmatrix.co/creative-mind-maps I personally use Mindjet MindManager. This is one ...
- Android-Kotlin-Activity直接的跳转
1.选中应用包名packageName,右键: 2.选中Kotlin: 3.创建Kotlin的Activity完成: 第一个Activity,MainActivity package cn.kotli ...
- jsp中文乱码解决办法
一.JSP页面显示乱码 二.表单提交中文时出现乱码 三.数据库连接 大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到 的中文乱码的问题及解决办法写出来供 ...