31 lines
935 B
JavaScript
31 lines
935 B
JavaScript
|
import { writeFile, set_fs, utils } from 'xlsx';
|
||
|
import * as fs from 'fs'; set_fs(fs);
|
||
|
import { MongoClient } from 'mongodb';
|
||
|
|
||
|
const url = 'mongodb://localhost:27017/sheetjs';
|
||
|
const db_name = 'sheetjs';
|
||
|
|
||
|
/* Connect to mongodb server */
|
||
|
const client = await MongoClient.connect(url, { useUnifiedTopology: true });
|
||
|
|
||
|
/* Sample data table */
|
||
|
const db = client.db(db_name);
|
||
|
try { await db.collection('pres').drop(); } catch(e) {}
|
||
|
const pres = db.collection('pres');
|
||
|
await pres.insertMany([
|
||
|
{ name: "Barack Obama", idx: 44 },
|
||
|
{ name: "Donald Trump", idx: 45 },
|
||
|
{ name: "Joseph Biden", idx: 46 }
|
||
|
], {ordered: true});
|
||
|
|
||
|
/* Create worksheet from collection */
|
||
|
const aoo = await pres.find({}, {projection:{_id:0}}).toArray();
|
||
|
const ws = utils.json_to_sheet(aoo);
|
||
|
|
||
|
/* Export to XLSX */
|
||
|
const wb = utils.book_new();
|
||
|
utils.book_append_sheet(wb, ws, "Presidents");
|
||
|
writeFile(wb, "SheetJSMongoCRUD.xlsx");
|
||
|
|
||
|
/* Close connection */
|
||
|
client.close();
|