forked from sheetjs/docs.sheetjs.com
		
	
		
			
	
	
		
			33 lines
		
	
	
		
			876 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			33 lines
		
	
	
		
			876 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | /* Load SQLite3 connector library */ | ||
|  | import { Database } from "bun:sqlite"; | ||
|  | 
 | ||
|  | /* Load SheetJS library */ | ||
|  | import * as XLSX from "xlsx"; | ||
|  | import * as fs from "fs"; | ||
|  | XLSX.set_fs(fs); | ||
|  | 
 | ||
|  | /* Initialize database */ | ||
|  | var db = Database.open("chinook.db"); | ||
|  | 
 | ||
|  | /* Create new workbook */ | ||
|  | var wb = XLSX.utils.book_new(); | ||
|  | 
 | ||
|  | /* Get list of table names */ | ||
|  | var sql = db.prepare("SELECT name FROM sqlite_master WHERE type='table'"); | ||
|  | var result = sql.all(); | ||
|  | 
 | ||
|  | /* Loop across each name */ | ||
|  | result.forEach(function(row) { | ||
|  |   /* Get first 100K rows */ | ||
|  |   var aoo = db.prepare("SELECT * FROM '" + row.name + "' LIMIT 100000").all(); | ||
|  |   if(aoo.length > 0) { | ||
|  |     /* Create Worksheet from the row objects */ | ||
|  |     var ws = XLSX.utils.json_to_sheet(aoo, {dense: true}); | ||
|  |     /* Add to Workbook */ | ||
|  |     XLSX.utils.book_append_sheet(wb, ws, row.name); | ||
|  |   } | ||
|  | }); | ||
|  | 
 | ||
|  | /* Write File */ | ||
|  | XLSX.writeFile(wb, "SheetJSQLiteBun.xlsx"); |