使用Meteor / JavaScript将MongoDB集合导出为CSV或XLSX

时间:2013-08-30 14:19:48

标签: javascript mongodb export meteor

我想通过按钮(无登录系统)将我的收藏集导出为CSV或XLSX文件。

使用Meteor / JavaScript有一种简单的方法吗?

3 个答案:

答案 0 :(得分:10)

您可以使用类似https://github.com/eligrey/FileSaver.js的内容在浏览器端创建Blob,然后将其作为下载提供。

客户端js

var yourCSVData = "Col1Row1,Col2Row1\nCol1Row2,Col2Row2";

var blob = new Blob([yourCSVData], 
                    {type: "text/csv;charset=utf-8"});
saveAs(blob, "yourfile.csv");

将您的CSV构建到yourCSVData,然后您就可以轻松下载该文件了。

要构建CSV,您必须使用一些自定义JavaScript。使用mongodb的是每个文档可以有不同的结构,这对行/列类型的文档来说非常糟糕。

你可以在上面的评论中使用Yvegeniy(http://jsfiddle.net/sturtevant/vUnF9/)给出的小提琴之类的东西。它可能会有所帮助

var data = MyCollection.find().fetch();
var yourCSVData = JSON2CSV(data);

答案 1 :(得分:1)

考虑到目前最新的Meteor 1.5和最新的Meteor软件包,以下是将 Mongo DB 集合转换为 CSV 所需遵循的步骤(也是可读的)通过MS Office就像一个魅力。)

  1. 您需要在执行以下任何步骤之前安装以下软件包

    pfafman:filesaver
    harrison:papa-parse
    
  2. 考虑一个简单的Blaze模板(即 MyTemplate.html ),下面带有下载链接,

    <template name="MyTemplate">
      <body>
        <a href="#" role="button" class="download">Download</a>
      </body>
    </template>
    
  3. 同样,您可以拥有事件处理程序(即 MyTemplate.js )来处理“下载”链接点击事件,< / p>

    Template.MyTemplate.events({    
        'click .download': function (event, template) {
            var data = MyCollection.find({}).fetch();
            var csv = Papa.unparse(data);
            var blob = new Blob([csv],  {type: "text/csv;charset=utf-8"});
            saveAs(blob, "MyCollection.csv");
        }   
    }); 
    
  4.   

    注意 - 当您点击下载链接时,您将无法获得任何弹出窗口或对话框供您继续下载,而是会自动为您自动下载。

答案 2 :(得分:0)

模板是一个非常好的导出系统

    {{#each documents}}
    "{{field1}}","{{field2}}"<br/>
    {{/each}}

xlsx格式虽然丑陋,但也适用于同样的处理方式。

渲染HTML页面实际上是一回事。就像生成pdf一样。或者生成SQL。