使用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 相关文章推荐
jQuery JSON的解析方式分享
Apr 05 Javascript
jQuery(js)获取文字宽度(显示长度)示例代码
Dec 31 Javascript
js实现二代身份证号码验证详解
Nov 20 Javascript
JavaScript将一个数组插入到另一个数组的方法
Mar 19 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
Oct 29 Javascript
jQuery实现的下雪动画效果示例【附源码下载】
Feb 02 jQuery
关于jquery layui弹出层的使用方法
Apr 21 jQuery
jQuery插件实现弹性运动完整示例
Jul 07 jQuery
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
Jan 15 Javascript
微信小程序实现星级评价
Nov 20 Javascript
vue框架中props的typescript用法详解
Feb 17 Javascript
jquery实现广告上下滚动效果
Mar 04 jQuery
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
通过ICQ网关发送手机短信的PHP源程序
2006/10/09 PHP
php 多关键字 高亮显示实现代码
2012/04/23 PHP
php制作unicode解码工具(unicode编码转换器)代码分享
2013/12/24 PHP
PHP下通过QRCode类库创建中间带网站LOGO的二维码
2014/07/12 PHP
javascript下查找父节点的简单方法
2007/08/13 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
2013/09/22 Javascript
JavaScript对象的property属性详解
2014/04/01 Javascript
Jquery使用val方法读写value值
2015/05/18 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
js enter键激发事件实例代码
2016/08/17 Javascript
JS拉起或下载app的实现代码
2017/02/22 Javascript
PHP实现本地图片上传和验证功能
2017/02/27 Javascript
js仿淘宝评价评分功能
2017/02/28 Javascript
全面解析jQuery中的$(window)与$(document)的用法区别
2017/08/15 jQuery
JavaScript判断变量名是否存在数组中的实例
2017/12/28 Javascript
vue-router 实现导航守卫(路由卫士)的实例代码
2018/09/02 Javascript
JS实现从对象获取对象中单个键值的方法示例
2019/06/05 Javascript
nodeJS与MySQL实现分页数据以及倒序数据
2020/06/05 NodeJs
浅析Python的Django框架中的Memcached
2015/07/23 Python
利用Python将每日一句定时推送至微信的实现方法
2018/08/13 Python
如何使用Python进行OCR识别图片中的文字
2019/04/01 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
2020/02/12 Python
Python3中的f-Strings增强版字符串格式化方法
2020/03/04 Python
在python中使用nohup命令说明
2020/04/16 Python
HTML5 SEO优化的一些建议
2020/08/27 HTML / CSS
苏格兰销售女装、男装和童装的连锁店:M&Co
2018/03/16 全球购物
SmartBuyGlasses意大利:购买太阳镜、眼镜和隐形眼镜
2018/11/20 全球购物
毕业生机械建模求职信
2013/10/14 职场文书
妇产科护士自我鉴定
2013/10/15 职场文书
农村葬礼主持词
2014/03/31 职场文书
新党章心得体会
2014/09/04 职场文书
党政领导班子民主生活会整改措施
2014/09/18 职场文书
单位员工收入证明样本
2014/10/09 职场文书
CSS3实现模糊背景的三种效果示例
2021/03/30 HTML / CSS
python如何正确使用yield
2021/05/21 Python
利用python做数据拟合详情
2021/11/17 Python