forked from sheetjs/docs.sheetjs.com
		
	
		
			
	
	
		
			34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | /* Load SQLite3 connector library */ | ||
|  | import { DB } from "https://deno.land/x/sqlite/mod.ts"; | ||
|  | 
 | ||
|  | /* Load SheetJS library */ | ||
|  | // @deno-types="https://cdn.sheetjs.com/xlsx-latest/package/types/index.d.ts"
 | ||
|  | import * as XLSX from "https://cdn.sheetjs.com/xlsx-latest/package/xlsx.mjs"; | ||
|  | 
 | ||
|  | /* Initialize database */ | ||
|  | var db = new DB("chinook.db"); | ||
|  | 
 | ||
|  | /* Create new workbook */ | ||
|  | var wb = XLSX.utils.book_new(); | ||
|  | 
 | ||
|  | /* Get list of table names */ | ||
|  | var sql = db.prepareQuery("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 query = db.prepareQuery("SELECT * FROM '" + row[0] + "' LIMIT 100000") | ||
|  |   var aoa = query.all(); | ||
|  |   if(aoa.length > 0) { | ||
|  |     /* Create array of arrays */ | ||
|  |     var data = [query.columns().map(x => x.name)].concat(aoa); | ||
|  |     /* Create Worksheet from the aoa */ | ||
|  |     var ws = XLSX.utils.aoa_to_sheet(data, {dense: true}); | ||
|  |     /* Add to Workbook */ | ||
|  |     XLSX.utils.book_append_sheet(wb, ws, row[0]); | ||
|  |   } | ||
|  | }); | ||
|  | 
 | ||
|  | /* Write File */ | ||
|  | XLSX.writeFile(wb, "SheetJSQLiteDeno.xlsx"); |