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?
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?
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);
Doskonała odpowiedź! –
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
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.
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.)
trzeba mieć poniżej pakietów zainstalowanych przed wszelkimi poniższych kroków
pfafman:filesaver
harrison:papa-parse
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>
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.
Powinieneś być bardziej konkretny. I to zależy od struktury twojej kolekcji. Na początek możesz to sprawdzić: http://jsfiddle.net/sturtevant/vUnF9/ –
Chciałbym poprosić o ponowne rozpatrzenie ostatniej odpowiedzi i dać mi znać na ten temat. –