使用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 相关文章推荐
多广告投放代码 推荐
Nov 13 Javascript
ASP SQL防注入的方法
Dec 25 Javascript
javascript仿qq界面的折叠菜单实现代码
Dec 12 Javascript
使用Jquery实现点击文字后变成文本框且可修改
Sep 21 Javascript
获取非最后一列td值并将title设为该值的方法
Oct 30 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
Apr 11 Javascript
jQuery UI库中dialog对话框功能使用全解析
Apr 23 Javascript
Node.js中常规的文件操作总结
Oct 13 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
Nov 28 Javascript
原生js实现返回顶部缓冲效果
Jan 18 Javascript
canvas实现探照灯效果
Feb 07 Javascript
对Vue table 动态表格td可编辑的方法详解
Aug 28 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实现采集中国天气网未来7天天气
2014/10/15 PHP
php实现猴子选大王问题算法实例
2015/04/20 PHP
浅谈Laravel队列实现原理解决问题记录
2017/08/19 PHP
PHP 实现手机端APP支付宝支付功能
2018/06/07 PHP
Javascript中的Split使用方法与技巧
2007/03/09 Javascript
javascript jQuery $.post $.ajax用法
2008/07/09 Javascript
借助script进行Http跨域请求:JSONP实现原理及代码
2013/03/19 Javascript
jQuery拖拽 &amp; 弹出层 介绍与示例
2013/12/27 Javascript
一个简单的Node.js异步操作管理器分享
2014/04/29 Javascript
JS实现常见的TAB、弹出层效果(TAB标签,斑马线,遮罩层等)
2015/10/08 Javascript
论Bootstrap3和Foundation5网格系统的异同
2016/05/16 Javascript
Bootstrap Table服务器分页与在线编辑应用总结
2016/08/08 Javascript
jquery+css3实现熊猫tv导航代码分享
2018/02/12 jQuery
解决vue的 v-for 循环中图片加载路径问题
2018/09/03 Javascript
JavaScript 高性能数组去重的方法
2018/09/20 Javascript
JS实现可用滑块滑动的缓动图代码
2019/09/01 Javascript
js实现简单选项卡制作
2020/08/05 Javascript
Selenium执行JavaScript脚本的方法示例
2020/12/31 Javascript
[50:28]LGD女子学院第三期 DOTA2复仇之魂教学
2013/12/24 DOTA
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
python 实现创建文件夹和创建日志文件的方法
2019/07/07 Python
使用python打印十行杨辉三角过程详解
2019/07/10 Python
python实现输出一个序列的所有子序列示例
2019/11/18 Python
pytorch AvgPool2d函数使用详解
2020/01/03 Python
AmazeUI的下载配置与Helloworld的实现
2020/08/19 HTML / CSS
美国和加拿大计算机和电子产品购物网站:TigerDirect.com
2019/09/13 全球购物
医学生自我鉴定范文
2013/11/08 职场文书
医学专业五年以上个人求职信
2013/12/03 职场文书
房屋租赁合同补充协议
2014/10/11 职场文书
2016年幼儿园庆六一开幕词
2016/03/04 职场文书
Python面向对象之成员相关知识总结
2021/06/24 Python
SQL SERVER存储过程用法详解
2022/02/24 SQL Server
python Tkinter模块使用方法详解
2022/04/07 Python
Mac电脑OS系统下安装Nginx的详细教程
2022/04/14 Servers
使用compose函数优化代码提高可读性及扩展性
2022/06/16 Javascript
蓝牙耳机怎么连接电脑win11? Win11蓝牙耳机连接电脑的技巧
2023/01/09 数码科技