使用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实现瀑布流动态加载图片原理
Aug 12 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
Oct 27 Javascript
使用Javascript监控前端相关数据的代码
Oct 27 Javascript
深入学习jQuery中的data()
Dec 22 Javascript
深入理解在JS中通过四种设置事件处理程序的方法
Mar 02 Javascript
深入解析Vue 组件命名那些事
Jul 18 Javascript
js实现关闭网页出现是否离开提示
Dec 07 Javascript
vue编译打包本地查看index文件的方法
Feb 23 Javascript
使用vue.js在页面内组件监听scroll事件的方法
Sep 11 Javascript
jquery 键盘事件 keypress() keydown() keyup()用法总结
Oct 23 jQuery
antd design table更改某行数据的样式操作
Oct 31 Javascript
vue实现标签云效果的示例
Nov 09 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或asp创建网页桌面快捷方式的代码
2010/03/23 PHP
PHP中实现Bloom Filter算法
2015/03/30 PHP
WordPress的文章自动添加关键词及关键词的SEO优化
2016/03/01 PHP
插件:检测javascript的内存泄漏
2007/03/04 Javascript
从JavaScript的函数重名看其初始化方式
2007/03/08 Javascript
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
2009/12/27 Javascript
Javascript Cookie读写删除操作的函数
2010/03/02 Javascript
5个javascript的数字格式化函数分享
2011/12/07 Javascript
JS小功能(checkbox实现全选和全取消)实例代码
2013/11/28 Javascript
node.js中的console.assert方法使用说明
2014/12/10 Javascript
javascript学习总结之js使用技巧
2015/09/02 Javascript
js实现带农历和八字等信息的日历特效
2016/05/16 Javascript
微信小程序 欢迎界面开发的实例详解
2016/11/30 Javascript
详解node+express+ejs+bootstrap构建项目
2017/09/27 Javascript
微信小程序嵌入腾讯视频源过程详解
2019/08/08 Javascript
js实现图片3D轮播效果
2019/09/21 Javascript
js实现移动端吸顶效果
2020/01/08 Javascript
微信小程序实现滑动操作代码
2020/04/23 Javascript
Python爬取APP下载链接的实现方法
2016/09/30 Python
pandas实现选取特定索引的行
2018/04/20 Python
使用selenium和pyquery爬取京东商品列表过程解析
2019/08/15 Python
pandas条件组合筛选和按范围筛选的示例代码
2019/08/26 Python
python:动态路由的Flask程序代码
2019/11/22 Python
基于Python生成个性二维码过程详解
2020/03/05 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
2020/04/27 Python
HTML5的文档结构和新增标签完全解析
2017/04/21 HTML / CSS
关于iframe跨域使用postMessage的实现
2019/10/29 HTML / CSS
汽车驾驶求职信
2013/10/25 职场文书
2014年秋季开学典礼致辞
2014/08/02 职场文书
财政专业大学生职业生涯规划书
2014/09/17 职场文书
民主生活会整改措施(党员)
2014/09/18 职场文书
五好家庭申报材料
2014/12/20 职场文书
无工作证明怎么写
2015/06/15 职场文书
女方家长婚礼致辞
2015/07/27 职场文书
一文彻底理解js原生语法prototype,__proto__和constructor
2021/10/24 Javascript
vue2的 router在使用过程中遇到的一些问题
2022/04/13 Vue.js