forked from sheetjs/docs.sheetjs.com
		
	
		
			
	
	
		
			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(); |