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");
|