使用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 相关文章推荐
ExtJS 2.0实用简明教程之应用ExtJS
Apr 29 Javascript
JQery 渐变图片导航效果代码 漂亮
Jan 01 Javascript
JQUERY操作JSON实例代码
Feb 09 Javascript
jquery简单的拖动效果实现原理及示例
Jul 26 Javascript
JavaScript移除数组元素减少长度的方法
Sep 05 Javascript
jQuery圆形统计图开发实例
Jan 04 Javascript
js选择器全面解析
Jun 27 Javascript
在web中js实现类似excel的表格控件
Sep 01 Javascript
深入理解node.js之path模块
May 03 Javascript
VUE实现可随意拖动的弹窗组件
Sep 25 Javascript
浅谈JavaScript 代码整洁之道
Oct 23 Javascript
vue 获取url里参数的两种方法小结
Nov 12 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
德生PL330测评
2021/03/02 无线电
使用dump函数,给php加断点测试
2013/06/25 PHP
一个PHP的远程图片抓取函数分享
2013/09/25 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
2014/06/19 PHP
利用PHP将部分内容用星号替换
2020/04/21 PHP
PHP随机数 C扩展随机数
2016/05/04 PHP
php面向对象重点知识分享
2019/09/27 PHP
thinkphp5.1 框架钩子和行为用法实例分析
2020/05/25 PHP
JavaScript中获取元素索引的函数
2010/09/10 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器(优化篇)
2013/06/28 Javascript
js加入收藏夹代码(兼容ie/ff/op)
2014/05/16 Javascript
javascript定时器完整实例
2015/02/10 Javascript
jQuery实现的超酷苹果风格图标滑出菜单效果代码
2015/09/16 Javascript
jQuery取得iframe中元素的常用方法详解
2016/01/14 Javascript
JS判断Android、iOS或浏览器的多种方法(四种方法)
2017/06/29 Javascript
Angular实现表单验证功能
2017/11/13 Javascript
Angular开发实践之服务端渲染
2018/03/29 Javascript
微信小程序自定义弹出层效果
2020/05/26 Javascript
Vue+penlayers实现多边形绘制及展示
2020/12/24 Vue.js
[40:31]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python 元组拆包示例(Tuple Unpacking)
2019/12/24 Python
python numpy 矩阵堆叠实例
2020/01/17 Python
keras 如何保存最佳的训练模型
2020/05/25 Python
css3给背景图片加颜色遮罩的方法
2019/11/05 HTML / CSS
Banana Republic欧盟:美国都市简约风格的代表品牌
2018/05/09 全球购物
SCHIESSER荷兰官方网站:德国内衣专家
2020/10/09 全球购物
英国顶尖手表珠宝品牌独家授权经销商:HS Johnson
2020/10/28 全球购物
广州喜创信息技术有限公司JAVA软件工程师笔试题
2012/10/17 面试题
全民健身日活动方案
2014/01/29 职场文书
期末自我鉴定
2014/02/02 职场文书
妈妈的账单教学反思
2014/02/06 职场文书
市场营销专业大学生职业生涯规划文
2014/03/06 职场文书
小学新学期寄语
2014/04/02 职场文书
物业工程部岗位职责
2015/02/11 职场文书
2016年优秀少先队辅导员事迹材料
2016/02/26 职场文书
React中的Context应用场景分析
2021/06/11 Javascript