使用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 相关文章推荐
location.href 在IE6中不跳转的解决方法与推荐使用代码
Jul 08 Javascript
jQuery之网页换肤实现代码
Apr 30 Javascript
动态加载js和css(外部文件)
Apr 17 Javascript
jquery实现tr元素的上下移动示例代码
Dec 20 Javascript
jQuery实现HTML5 placeholder效果实例
Dec 09 Javascript
javascript Array 数组常用方法
Apr 05 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
Jun 08 Javascript
在网页中插入百度地图的步骤详解
Dec 02 Javascript
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
Jul 25 Javascript
微信小程序手动添加收货地址省市区联动
May 18 Javascript
vue 子组件watch监听不到prop的解决
Aug 09 Javascript
Vue+Element UI实现概要小弹窗的全过程
May 30 Vue.js
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防止伪造数据从地址栏URL提交的方法
2014/08/24 PHP
php防止网站被攻击的应急代码
2015/10/21 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
PHP开发实现微信退款功能示例
2017/11/25 PHP
Laravel框架文件上传功能实现方法示例
2019/04/16 PHP
TP5框架简单登录功能实现方法示例
2019/10/31 PHP
JavaScript如何实现组合列表框中元素移动效果
2016/03/01 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
2016/03/23 Javascript
Vuejs实现带样式的单文件组件新方法
2017/05/02 Javascript
layui表格实现代码
2017/05/20 Javascript
Node.Js生成比特币地址代码解析
2018/04/21 Javascript
微信小程序实现滑动切换自定义页码的方法分析
2018/12/29 Javascript
JavaScript ES6常用基础知识总结
2019/02/09 Javascript
Node.js原生api搭建web服务器的方法步骤
2019/02/15 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
2019/05/10 Javascript
js实现点赞效果
2020/03/16 Javascript
js实现简单贪吃蛇游戏
2020/05/15 Javascript
利用Python爬取微博数据生成词云图片实例代码
2017/08/31 Python
python中字符串比较使用is、==和cmp()总结
2018/03/18 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
pycharm安装及如何导入numpy
2020/04/03 Python
简单了解python列表和元组的区别
2020/05/14 Python
关于matplotlib-legend 位置属性 loc 使用说明
2020/05/16 Python
canvas 如何绘制线段的实现方法
2018/07/12 HTML / CSS
英国殿堂级有机护肤品牌:Rodial
2017/04/17 全球购物
如何写一个自定义标签
2012/12/28 面试题
UNIX文件名称有什么规定
2013/03/25 面试题
大三自我鉴定范文
2013/10/05 职场文书
执行总经理岗位职责
2014/02/03 职场文书
金融管理应届生求职信
2014/02/20 职场文书
亮剑精神演讲稿
2014/05/23 职场文书
我与祖国共奋进演讲稿
2014/09/13 职场文书
接收函格式
2015/01/30 职场文书
千手观音观后感
2015/06/03 职场文书
行政复议决定书
2015/06/24 职场文书
Nginx的反向代理实例详解
2021/03/31 Servers