使用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高级程序设计 阅读笔记(二十) js错误处理
Aug 14 Javascript
js加强的经典分页实例
Mar 15 Javascript
提示$ is not defined错误分析及解决
Apr 09 Javascript
JS实现两个大数(整数)相乘
Apr 28 Javascript
jQuery制作简洁的图片轮播效果
Apr 03 Javascript
jquery实现的动态回到顶部特效代码
Oct 28 Javascript
jquery对象访问是什么及使用方法介绍
May 03 Javascript
jquery pagination插件动态分页实例(Bootstrap分页)
Dec 23 Javascript
Bootstrap如何激活导航状态
Mar 22 Javascript
vue-cli V3.0版本的使用详解
Oct 24 Javascript
详解nuxt路由鉴权(express模板)
Nov 21 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
Jun 10 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函数代码
2010/04/22 PHP
linux iconv方法的使用
2011/10/01 PHP
PHP代码实现爬虫记录――超管用
2015/07/31 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
2016/02/26 PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
2016/09/11 PHP
thinkPHP模板中for循环与switch语句用法示例
2016/11/30 PHP
laravel 5.4中实现无限级分类的方法示例
2017/07/27 PHP
PHP-X系列教程之内置函数的使用示例
2017/10/16 PHP
PHP如何根据文件头检测文件类型实例代码
2018/10/14 PHP
laravel 解决多库下的DB::transaction()事务失效问题
2019/10/21 PHP
javascript编程起步(第五课)
2007/02/27 Javascript
js操作iframe的一些方法介绍
2013/06/25 Javascript
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
2013/09/30 Javascript
基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
2016/03/07 Javascript
canvas压缩图片转换成base64格式输出文件流
2017/03/09 Javascript
微信小程序云开发 生成带参小程序码流程
2019/05/18 Javascript
nodejs 递归拷贝、读取目录下所有文件和目录
2019/07/18 NodeJs
js实现列表按字母排序
2020/08/11 Javascript
详解vite2.0配置学习(typescript版本)
2021/02/25 Javascript
[01:04:06]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第一局
2016/02/26 DOTA
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
Python实现模拟分割大文件及多线程处理的方法
2017/10/10 Python
Python之ReportLab绘制条形码和二维码的实例
2018/01/15 Python
Python基于递归实现电话号码映射功能示例
2018/04/13 Python
Python实现获取本地及远程图片大小的方法示例
2018/07/21 Python
windows下python 3.6.4安装配置图文教程
2018/08/21 Python
Python中qutip用法示例详解
2020/10/02 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
2020/12/05 Python
介绍一下Java中标识符的命名规则
2014/02/03 面试题
计算机毕业大学生推荐信
2013/12/01 职场文书
大学学习个人的自我评价
2014/02/18 职场文书
社保代办委托书怎么写
2014/10/06 职场文书
2014年小学图书室工作总结
2014/12/09 职场文书
捐款通知怎么写
2015/04/24 职场文书
辞职离别感言
2015/08/04 职场文书