2013-08-30 9 views
6

Chcę eksportować moją kolekcję do pliku CSV lub XLSX za pomocą przycisku (bez systemu logowania).Eksportuj kolekcję MongoDB do CSV lub XLSX z Meteor/JavaScript

Czy istnieje prosty sposób, aby to zrobić z Meteor/JavaScript?

+1

Powinieneś być bardziej konkretny. I to zależy od struktury twojej kolekcji. Na początek możesz to sprawdzić: http://jsfiddle.net/sturtevant/vUnF9/ –

+0

Chciałbym poprosić o ponowne rozpatrzenie ostatniej odpowiedzi i dać mi znać na ten temat. –

Odpowiedz

10

Możesz użyć czegoś takiego jak https://github.com/eligrey/FileSaver.js, aby utworzyć obiekt typu Blob po stronie przeglądarki, a następnie zaoferować go do pobrania.

stronie klienta js

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

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

Zbuduj CSV do yourCSVData wtedy powinieneś mieć plik pobrany bardzo łatwo.

Aby zbudować swój plik CSV, musisz użyć niestandardowego javascript. Rzecz z mongodb polega na tym, że każdy dokument może mieć inną strukturę, co jest bardzo niekorzystne dla dokumentów typu wiersz/kolumna.

Można użyć coś jak ryba podanej przez Yvegeniy (http://jsfiddle.net/sturtevant/vUnF9/) w komentarzach powyżej & może pomóc

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

Doskonała odpowiedź! –

+0

Co, jeśli muszę zasubskrybować pełną kolekcję, a nie tylko jej część, tak jak to robię na stronie, na której jest pobierane. Powód dla małej subskrypcji zależy od wielkości kolekcji spowalnia stronę do straganu. – mjwrazor

0

Szablon sprawia, że ​​doskonale dobry system eksportowej

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

formacie xlsx , choć brzydszy, nadaje się do tego samego traktowania.

Renderowanie strony HTML to naprawdę to samo. Jak generuje pdf. Lub generowanie kodu SQL.

1

Biorąc pod uwagę ostatnie Meteor 1.5 i najnowsze dostępne pakiety Meteor dzień dzisiejszy poniżej są kroki trzeba wykonać, w celu przekształcenia Mongo DB Collection do CSV (również odczytywany przez MS Office jak czar.)

  1. trzeba mieć poniżej pakietów zainstalowanych przed wszelkimi poniższych kroków

    pfafman:filesaver 
    harrison:papa-parse 
    
  2. Rozważmy prosty szablon Blaze (to znaczy. MyTemplate.html) z pobieranie link poniżej,

    <template name="MyTemplate"> 
        <body> 
        <a href="#" role="button" class="download">Download</a> 
        </body> 
    </template> 
    
  3. Podobnie można mieć procedury obsługi zdarzeń (tj MyTemplate.js), aby obsłużyć "Pobierz kliknięcie linku" wydarzenie,

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

UWAGA - Po kliknięciu linku pobierania nie pojawi się żadne okno podręczne ani okno dialogowe do kontynuowania pobierania, raczej automatycznie pobierze je w trybie cichym.

Powiązane problemy