Potřeboval jsem do MongoDB naimportovat hafo dat z Excelu. Nejjednodušší bylo XLS soubor uložit do CSV a pak jednotlivé řádky zkonvertovat na JSON objekty.
Asi takhle:
var fs = require('fs'); var path = require('path'); // nazev souboru, ktery se bude konvertovat var fileName = "./kalendar.csv"; // nacteni daneho souboru var f = fs.readFileSync(fileName, { encoding: 'utf-8' }, function(err) { console.log(err); }); // Rozdeli nacteny soubor na jednotlive radky, a protoze je soubor z Win, pak \r\n f = f.split("\r\n"); // z prvniho radku nactu nazvy jednotlivych sloupcu // predpokladam, ze oddelovacem ke strednik, ale muze byt cokoliv var headers = f.shift().split(";"); // pole zkonvertovanych JSON objektu var json = []; // konvertuje jednotlive nactene CSV radky f.forEach(function(d) { var tmp = {}; var row = d.split(";"); for (var i = 0; i < headers.length; i++) { tmp[headers[i]] = row[i]; } json.push(tmp); }); // hotovo, ted jen kouknout co se nacetlo json.forEach(function(p) { console.log(p); });
Nutno ještě dodat, že k tomuto existuje spousta NPM balíčku a když jsem s s převodem začínal, jasně že jsem šáhnul po nějakém z nich. Ale protože jsem neuspěl s implementací hned napoprvé, tak jsem si to napsal sám…
Načtení 684 řádku do pole JSON objektů na mém Macovi trvalo 0.144s….