使用javascript实现json数据以csv格式下载


Posted in Javascript onJanuary 09, 2015

摘要:

最近有一个非项目的小需求,就是将项目开发分工文件化,方便后期管理维护。但是开发时,分工安排都是以json格式记录的,所以就做了一个将json数据以csv格式下载到本地。

代码:

<!DOCTYPE html>

<html>

    <title>download csv</title>

    <head>

        <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>

        <script type="text/javascript" src="download.js"></script>

    </head>

    <body>

        <div align="center">

            <h3><u>Enter JSON data</u></h3>

            <div class='mydiv'>

                    <textarea id="txt" class='txtarea' rows="15" cols="100">[{"Vehicle":"BMW","Date":"30 Jul 2013 09:24 AM","Location":"Hauz Khas","Speed":42},{"Vehicle":"Honda CBR","Date":"30 Jul 2013 12:00 AM","Location":"Military Road","Speed":0},{"Vehicle":"Supra","Date":"30 Jul 2013 07:53 AM","Location":"Sec-45","Speed":58},{"Vehicle":"Land Cruiser","Date":"30 Jul 2013 09:35 AM","Location":"DLF Phase I","Speed":83}]</textarea>

            </div>

            <br/>

            <button class="download">Download CSV</button>

        </div>

    </body>

</html>

download.js

$(document).ready(function() {

    "use strict";

    var mo = {

        init: function() {

            $('.download').click(function() {

                var data = $('#txt').val();

                if (data === '') {

                    return;

                }

                mo.JSONToCSVConvertor(data, true);

            });

        },

        JSONToCSVConvertor: function(JSONData, 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]) {

                    var arrValue = arrData[i][index] == null ? "" : '="' + arrData[i][index] + '"';

                    row += arrValue + ',';

                }

                row.slice(0, row.length - 1);

                CSV += row + '\r\n';

            }

            if (CSV == '') {

                growl.error("Invalid data");

                return;

            }

            var fileName = "Result";

            if (mo.msieversion()) {

                var IEwindow = window.open();

                IEwindow.document.write('sep=,\r\n' + CSV);

                IEwindow.document.close();

                IEwindow.document.execCommand('SaveAs', true, fileName + ".csv");

                IEwindow.close();

            } else {

                var uri = 'data:application/csv;charset=utf-8,' + escape(CSV);

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

                link.href = uri;

                link.style = "visibility:hidden";

                link.download = fileName + ".csv";

                document.body.appendChild(link);

                link.click();

                document.body.removeChild(link);

            }

        },

        msieversion: function() {

            var ua = window.navigator.userAgent;

            var msie = ua.indexOf("MSIE ");

            if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) // If Internet Explorer, return version number 

            {

                return true;

            } else { // If another browser, 

                return false;

            }

            return false;

        },

        main: function() {

            mo.init();

        }

    };

    mo.main();

});

小结:

注意json格式[{},{}],文件名是在js中定义的变量fileName。主要问题是他会自动添加一行空行,且每个元素都会在值前面加个'='。

下载下来的数据格式为:

使用javascript实现json数据以csv格式下载

Javascript 相关文章推荐
javascript语言结构小记(一)
Sep 10 Javascript
两个select多选模式的选项相互移动(示例代码)
Jan 11 Javascript
js使用DOM操作实现简单留言板的方法
Apr 10 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
May 03 Javascript
js获取页面description的方法
May 21 Javascript
jQuery使用JSONP实现跨域获取数据的三种方法详解
May 04 jQuery
JavaScript基础心法 数据类型
Mar 05 Javascript
jsonp跨域获取数据的基础教程
Jul 01 Javascript
vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
Nov 29 Javascript
Nuxt.js开启SSR渲染的教程详解
Nov 30 Javascript
vue-test-utils初使用详解
May 23 Javascript
JavaScript字符串处理常见操作方法小结
Nov 15 Javascript
js读取csv文件并使用json显示出来
Jan 09 #Javascript
微信JS接口汇总及使用详解
Jan 09 #Javascript
推荐一款jQuery插件模板
Jan 09 #Javascript
JavaScript中Cookie操作实例
Jan 09 #Javascript
使用javascript实现简单的选项卡切换
Jan 09 #Javascript
14个有用的Jquery技巧分享
Jan 08 #Javascript
jQuery中insertBefore()方法用法实例
Jan 08 #Javascript
You might like
PHP生成静态页面详解
2006/12/05 PHP
php $_SERVER当前完整url的写法
2009/11/12 PHP
浅析php中jsonp的跨域实例
2013/06/21 PHP
php制作动态随机验证码
2015/02/12 PHP
PHP变量赋值、代入给JavaScript中的变量
2015/06/29 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
Javascript中的Split使用方法与技巧
2007/03/09 Javascript
使用jquery获取网页中图片高度的两种方法
2013/09/26 Javascript
js实现从右向左缓缓浮出网页浮动层广告的方法
2015/05/09 Javascript
浅谈Jquery核心函数
2015/06/18 Javascript
JavaScript Array对象详解
2016/03/01 Javascript
一些实用性较高的js方法
2016/04/19 Javascript
JS表格组件BootstrapTable行内编辑解决方案x-editable
2016/09/01 Javascript
angularjs+bootstrap菜单的使用示例代码
2017/03/07 Javascript
几种响应式文字详解
2017/05/19 Javascript
使用vuex缓存数据并优化自己的vuex-cache
2018/05/30 Javascript
小程序ios音频播放没声音问题的解决
2018/07/11 Javascript
微信小程序简单的canvas裁剪图片功能详解
2019/07/12 Javascript
layui实现数据表格点击搜索功能
2020/03/26 Javascript
[03:10]超级美酒第四天 fy拉比克秀 大合集
2018/06/05 DOTA
python实现上传样本到virustotal并查询扫描信息的方法
2014/10/05 Python
Python使用urllib模块的urlopen超时问题解决方法
2014/11/08 Python
Python中字典和JSON互转操作实例
2015/01/19 Python
Python numpy 点数组去重的实例
2018/04/18 Python
浅谈Python中的bs4基础
2018/10/21 Python
Python爬虫之UserAgent的使用实例
2019/02/21 Python
土耳其国际性时尚购物网站:Modanisa
2018/01/19 全球购物
佳能法国商店:Canon法国
2019/02/14 全球购物
请用用Java代码写一个堆栈
2012/01/26 面试题
c语言常见笔试题总结
2016/09/05 面试题
.NET方向面试题
2014/11/20 面试题
大学专科生推荐信范文
2013/11/23 职场文书
2016猴年春节问候语
2015/11/11 职场文书
医德医风学习心得体会
2016/01/25 职场文书
《扇形统计图》教学反思
2016/02/17 职场文书
Python干货实战之八音符酱小游戏全过程详解
2021/10/24 Python