2013-08-30 39 views
6

我想通過按鈕(無登錄系統)將我的集合導出到CSV或XLSX文件。使用Meteor/JavaScript將MongoDB集合導出爲CSV或XLSX

有沒有一個簡單的方法來做到這一點與Meteor/JavaScript?

+1

你應該更具體。這取決於你收藏的結構。一開始你可以調查:http://jsfiddle.net/sturtevant/vUnF9/ –

+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); 
+0

優秀的答案! –

+0

如果我需要訂閱完整的集合而不僅僅是它的一部分,就像我在頁面上進行下載一樣。小訂閱的原因是收集的大小會使頁面變慢。 – mjwrazor

0

模板,使一個完美的出口系統

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

的XLSX格式雖然更醜陋,但它適用於同樣的待遇。

呈現一個HTML頁面是真的一回事。正在生成pdf。或者生成SQL。

1

考慮最新的流星1.5和最新的流星套餐截至今日,下面是你需要的,以轉化蒙戈DB收集到CSV(也可讀的MS Office就像一個魅力。)

遵循的步驟
  1. 你需要有以下的任何步驟之前安裝的軟件包,

    pfafman:filesaver 
    harrison:papa-parse 
    
  2. 考慮一個簡單的火焰模板(即MyTemplate.html)以低於下載鏈接,

    <template name="MyTemplate"> 
        <body> 
        <a href="#" role="button" class="download">Download</a> 
        </body> 
    </template> 
    
  3. 同樣可以讓事件處理程序(即MyTemplate.js)來處理 「下載」 鏈接點擊事件,

    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"); 
        } 
    }); 
    

注意 - 當您單擊下載鏈接時,將不會有任何彈出窗口或對話框讓您繼續下載,而是會自動爲您自動下載它。