forked from sheetjs/sheetjs
		
	- add BOM to `stream.to_csv` (fixes #1024 h/t @hr5959) - `utils.format_cell` type (h/t @victorj2307) - duktape niggles - demo cleanup
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */
 | 
						|
/* eslint-env node */
 | 
						|
var XLSX = require('xlsx');
 | 
						|
var assert = require('assert');
 | 
						|
var SheetJSSQL = require('./SheetJSSQL');
 | 
						|
var Database = require('better-sqlite3');
 | 
						|
var db1 = new Database('SheetJS1.db');
 | 
						|
 | 
						|
/* Sample data table */
 | 
						|
var init = [
 | 
						|
  "DROP TABLE IF EXISTS pres",
 | 
						|
  "CREATE TABLE pres (name TEXT, idx INTEGER)",
 | 
						|
  "INSERT INTO pres VALUES ('Barack Obama', 44)",
 | 
						|
  "INSERT INTO pres VALUES ('Donald Trump', 45)",
 | 
						|
  "DROP TABLE IF EXISTS fmts",
 | 
						|
  "CREATE TABLE fmts (ext TEXT, ctr TEXT, multi INTEGER)",
 | 
						|
  "INSERT INTO fmts VALUES ('XLSB', 'ZIP', 1)",
 | 
						|
  "INSERT INTO fmts VALUES ('XLS',  'CFB', 1)",
 | 
						|
  "INSERT INTO fmts VALUES ('XLML', '',    1)",
 | 
						|
  "INSERT INTO fmts VALUES ('CSV',  '',    0)",
 | 
						|
];
 | 
						|
db1.exec(init.join(";"));
 | 
						|
 | 
						|
/* Export database to XLSX */
 | 
						|
var wb = XLSX.utils.book_new();
 | 
						|
function book_append_table(wb, db, name) {
 | 
						|
  var r = db.prepare('SELECT * FROM ' + name).all();
 | 
						|
  var ws = XLSX.utils.json_to_sheet(r);
 | 
						|
  XLSX.utils.book_append_sheet(wb, ws, name);
 | 
						|
}
 | 
						|
book_append_table(wb, db1, "pres");
 | 
						|
book_append_table(wb, db1, "fmts");
 | 
						|
XLSX.writeFile(wb, "sqlite.xlsx");
 | 
						|
 | 
						|
/* Import XLSX to database */
 | 
						|
var db2 = new Database('SheetJS2.db');
 | 
						|
var wb2 = XLSX.readFile("sqlite.xlsx");
 | 
						|
var queries = SheetJSSQL.book_to_sql(wb2, "SQLITE");
 | 
						|
queries.forEach(function(q) { db2.exec(q); });
 | 
						|
 | 
						|
/* Compare databases */
 | 
						|
var P1 = db1.prepare("SELECT * FROM pres").all();
 | 
						|
var P2 = db2.prepare("SELECT * FROM pres").all();
 | 
						|
var F1 = db1.prepare("SELECT * FROM fmts").all();
 | 
						|
var F2 = db2.prepare("SELECT * FROM fmts").all();
 | 
						|
assert.deepEqual(P1, P2);
 | 
						|
assert.deepEqual(F1, F2);
 | 
						|
 | 
						|
console.log(P2);
 | 
						|
console.log(F2);
 | 
						|
 |