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
		
			
				
	
	
		
			73 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.3 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 Client = require('pg').Client;
 | |
| 
 | |
| /* Connection options (requires two databases sheetjs and sheetj5) */
 | |
| var opts = {
 | |
|   host     : 'localhost',
 | |
|   user     : 'SheetJS',
 | |
|   password : 'SheetJS',
 | |
| };
 | |
| 
 | |
| /* Sample data table */
 | |
| var init = [
 | |
|   "DROP TABLE IF EXISTS pres",
 | |
|   "CREATE TABLE pres (name text, idx smallint)",
 | |
|   "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 smallint)",
 | |
|   "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)",
 | |
| ];
 | |
| 
 | |
| var conn1 = new Client(Object.assign({}, opts, {database: "sheetjs"}));
 | |
| var conn2 = new Client(Object.assign({}, opts, {database: "sheetj5"}));
 | |
| (async () => {
 | |
|   await conn1.connect();
 | |
|   for(var i = 0; i < init.length; ++i) await conn1.query(init[i]);
 | |
| 
 | |
|   /* Export table to XLSX */
 | |
|   var wb = XLSX.utils.book_new();
 | |
| 
 | |
|   async function book_append_table(wb, name) {
 | |
|     var r_f = await conn1.query('SELECT * FROM ' + name);
 | |
|     var r = r_f.rows;
 | |
|     var ws = XLSX.utils.json_to_sheet(r);
 | |
|     XLSX.utils.book_append_sheet(wb, ws, name);
 | |
|   }
 | |
| 
 | |
|   await book_append_table(wb, "pres");
 | |
|   await book_append_table(wb, "fmts");
 | |
|   XLSX.writeFile(wb, "pgsql.xlsx");
 | |
| 
 | |
|   /* Capture first database info and close */
 | |
|   var P1 = (await conn1.query("SELECT * FROM pres")).rows;
 | |
|   var F1 = (await conn1.query("SELECT * FROM fmts")).rows;
 | |
|   await conn1.end();
 | |
| 
 | |
|   /* Import XLSX to table */
 | |
|   await conn2.connect();
 | |
|   var wb2 = XLSX.readFile("pgsql.xlsx");
 | |
|   var queries = SheetJSSQL.book_to_sql(wb2, "PGSQL");
 | |
|   for(i = 0; i < queries.length; ++i) { console.log(queries[i]); await conn2.query(queries[i]); }
 | |
| 
 | |
|   /* Capture first database info and close */
 | |
|   var P2 = (await conn2.query("SELECT * FROM pres")).rows;
 | |
|   var F2 = (await conn2.query("SELECT * FROM fmts")).rows;
 | |
|   await conn2.end();
 | |
| 
 | |
|   /* Compare results */
 | |
|   assert.deepEqual(P1, P2);
 | |
|   assert.deepEqual(F1, F2);
 | |
| 
 | |
|   /* Display results */
 | |
|   console.log(P2);
 | |
|   console.log(F2);
 | |
| })();
 |