Koleksiyonumu CSV veya XLSX dosyasına bir düğme ile (log-in sistemi yok) vermek istiyorum.MongoDB koleksiyonunu CSV veya XLSX'e Meteor/JavaScript ile dışa aktarma
Meteor/JavaScript ile bunu yapmanın basit bir yolu var mı?
Koleksiyonumu CSV veya XLSX dosyasına bir düğme ile (log-in sistemi yok) vermek istiyorum.MongoDB koleksiyonunu CSV veya XLSX'e Meteor/JavaScript ile dışa aktarma
Meteor/JavaScript ile bunu yapmanın basit bir yolu var mı?
Tarayıcı tarafında Blob oluşturmak ve daha sonra bir indirme olarak sunmak için https://github.com/eligrey/FileSaver.js gibi bir şey kullanabilirsiniz.
istemci tarafı js
var yourCSVData = "Col1Row1,Col2Row1\nCol1Row2,Col2Row2";
var blob = new Blob([yourCSVData],
{type: "text/csv;charset=utf-8"});
saveAs(blob, "yourfile.csv");
o zaman çok kolay indirilen dosya var gerekir yourCSVData
içine CSV oluşturun.
CSV'nizi oluşturmak için bazı özel javascript kullanmanız gerekir. Mongodb ile olan şey, her bir belgenin satır/sütun tipi belgeler için çok kötü olan farklı bir yapıya sahip olmasıdır.
Bunu bir şablon gayet iyi ihracat sistemini
{{#each documents}}
"{{field1}}","{{field2}}"<br/>
{{/each}}
xlsx biçimi yapar
var data = MyCollection.find().fetch();
var yourCSVData = JSON2CSV(data);
mükemmel cevap! –
Tam koleksiyona abone olmam gerekiyorsa ve indirme işleminin yapıldığı sayfada yaptığım gibi değil. Küçük abonenin nedeni, koleksiyonun boyutu için sayfayı duraklatır. – mjwrazor
yardımcı olabilecek & yukarıdaki yorumlar (http://jsfiddle.net/sturtevant/vUnF9/) Yvegeniy tarafından verilen keman gibi bir şey kullanabilirsiniz çirkin ise kendini aynı tedaviye borç verir.
Bir HTML sayfası oluşturmak gerçekten aynı şeydir. Bir pdf oluştururken. Ya da SQL üretiyor. Meteor 1.5 ve bugün itibariyle en son Meteor paketleri son düşünüldüğünde
, Aşağıdaki Mongo DB Koleksiyon CSV(a çekicilik gibi MS Office tarafından da okunabilir.)
dönüştürmek için izlemeniz gereken adımlar şunlardır Sen önce altındaki herhangi adımlara yüklenmiş paketler aşağıda olması gerekir,
pfafman:filesaver
harrison:papa-parse
basit Blaze Şablon düşünün (Yani Aşağıda bir indirme bağlantı ile MyTemplate.html),
<template name="MyTemplate">
<body>
<a href="#" role="button" class="download">Download</a>
</body>
</template>
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");
}
});
NOT - İndirme bağlantısına tıkladığınızda, indirmeye devam etmeniz için herhangi bir açılır pencere veya iletişim kutusu alamazsınız, bunun yerine otomatik olarak sizin için sessizce indirilir.
Daha spesifik olmalısınız. Ve koleksiyonunuzun dayanıklılığına bağlıdır. Başlangıç için bunu araştırabilirsiniz: http://jsfiddle.net/sturtevant/vUnF9/ –
En son cevabı tekrar gözden geçirip, bu konudaki görüşlerinizi bildirmek isterim. –