From 9add78a29073eaafc2e83c6522ff79219ee7053f Mon Sep 17 00:00:00 2001 From: Srijon Saha Date: Tue, 7 Jul 2020 00:49:36 -0700 Subject: [PATCH] Fix write not working and refactor [ci skip] --- demos/electron/index.html | 6 +- demos/electron/index.js | 157 +++++++++++++++++--------------------- 2 files changed, 74 insertions(+), 89 deletions(-) diff --git a/demos/electron/index.html b/demos/electron/index.html index d0fa5db..c8ef088 100644 --- a/demos/electron/index.html +++ b/demos/electron/index.html @@ -26,12 +26,12 @@ a { text-decoration: none } Source Code Repo Issues? Something look weird? Click here and report an issue
-
+
Drop a spreadsheet file here to see sheet data
- ... or click here to select a file + ... or click here to select a file -

+


diff --git a/demos/electron/index.js b/demos/electron/index.js index 045ca9b..7ac4826 100644 --- a/demos/electron/index.js +++ b/demos/electron/index.js @@ -1,94 +1,79 @@ /* xlsx.js (C) 2013-present SheetJS -- https://sheetjs.com */ -/* global Uint8Array, console */ -/* exported export_xlsx */ -/* eslint no-use-before-define:0 */ -var XLSX = require('xlsx'); -var electron = require('electron').remote; +const XLSX = require('xlsx'); +const electron = require('electron').remote; -var process_wb = (function() { - var HTMLOUT = document.getElementById('htmlout'); - var XPORT = document.getElementById('xport'); +const EXTENSIONS = "xls|xlsx|xlsm|xlsb|xml|csv|txt|dif|sylk|slk|prn|ods|fods|htm|html".split("|"); - return function process_wb(wb) { - XPORT.disabled = false; - HTMLOUT.innerHTML = ""; - wb.SheetNames.forEach(function(sheetName) { - var htmlstr = XLSX.utils.sheet_to_html(wb.Sheets[sheetName],{editable:true}); - HTMLOUT.innerHTML += htmlstr; - }); +const processWb = function(wb) { + const HTMLOUT = document.getElementById('htmlout'); + const XPORT = document.getElementById('exportBtn'); + XPORT.disabled = false; + HTMLOUT.innerHTML = ""; + wb.SheetNames.forEach(function(sheetName) { + const htmlstr = XLSX.utils.sheet_to_html(wb.Sheets[sheetName],{editable:true}); + HTMLOUT.innerHTML += htmlstr; + }); +}; + +const readFile = function(files) { + const f = files[0]; + const reader = new FileReader(); + reader.onload = function(e) { + let data = e.target.result; + data = new Uint8Array(data); + processWb(XLSX.read(data, {type: 'array'})); }; -})(); + reader.readAsArrayBuffer(f); +}; -var do_file = (function() { - return function do_file(files) { - var f = files[0]; - var reader = new FileReader(); - reader.onload = function(e) { - var data = e.target.result; - data = new Uint8Array(data); - process_wb(XLSX.read(data, {type: 'array'})); - }; - reader.readAsArrayBuffer(f); - }; -})(); +const handleReadBtn = async function() { + const o = await electron.dialog.showOpenDialog({ + title: 'Select a file', + filters: [{ + name: "Spreadsheets", + extensions: EXTENSIONS + }], + properties: ['openFile'] + }); + if(o.filePaths.length > 0) processWb(XLSX.readFile(o.filePaths[0])); +}; -(function() { - var drop = document.getElementById('drop'); +const exportXlsx = async function() { + const HTMLOUT = document.getElementById('htmlout'); + const wb = XLSX.utils.table_to_book(HTMLOUT); + const o = await electron.dialog.showSaveDialog({ + title: 'Save file as', + filters: [{ + name: "Spreadsheets", + extensions: EXTENSIONS + }] + }); + console.log(o.filePath); + XLSX.writeFile(wb, o.filePath); + electron.dialog.showMessageBox({ message: "Exported data to " + o.filePath, buttons: ["OK"] }); +}; - function handleDrop(e) { - e.stopPropagation(); - e.preventDefault(); - do_file(e.dataTransfer.files); - } +// add event listeners +const readBtn = document.getElementById('readBtn'); +const readIn = document.getElementById('readIn'); +const exportBtn = document.getElementById('exportBtn'); +const drop = document.getElementById('drop'); - function handleDragover(e) { - e.stopPropagation(); - e.preventDefault(); - e.dataTransfer.dropEffect = 'copy'; - } - - drop.addEventListener('dragenter', handleDragover, false); - drop.addEventListener('dragover', handleDragover, false); - drop.addEventListener('drop', handleDrop, false); -})(); - -(function() { - var readf = document.getElementById('readf'); - async function handleF(/*e*/) { - var o = await electron.dialog.showOpenDialog({ - title: 'Select a file', - filters: [{ - name: "Spreadsheets", - extensions: "xls|xlsx|xlsm|xlsb|xml|xlw|xlc|csv|txt|dif|sylk|slk|prn|ods|fods|uos|dbf|wks|123|wq1|qpw|htm|html".split("|") - }], - properties: ['openFile'] - }); - if(o.filePaths.length > 0) process_wb(XLSX.readFile(o.filePaths[0])); - } - readf.addEventListener('click', handleF, false); -})(); - -(function() { - var xlf = document.getElementById('xlf'); - function handleFile(e) { do_file(e.target.files); } - xlf.addEventListener('change', handleFile, false); -})(); - -var export_xlsx = (function() { - var HTMLOUT = document.getElementById('htmlout'); - var XTENSION = "xls|xlsx|xlsm|xlsb|xml|csv|txt|dif|sylk|slk|prn|ods|fods|htm|html".split("|") - return async function() { - var wb = XLSX.utils.table_to_book(HTMLOUT); - var o = await electron.dialog.showSaveDialog({ - title: 'Save file as', - filters: [{ - name: "Spreadsheets", - extensions: XTENSION - }] - }); - console.log(o.filePath); - XLSX.writeFile(wb, o.filePath); - electron.dialog.showMessageBox({ message: "Exported data to " + o.filePath, buttons: ["OK"] }); - }; -})(); -void export_xlsx; +readBtn.addEventListener('click', handleReadBtn, false); +readIn.addEventListener('change', (e) => { readFile(e.target.files); }, false); +exportBtn.addEventListener('click', exportXlsx, false); +drop.addEventListener('dragenter', (e) => { + e.stopPropagation(); + e.preventDefault(); + e.dataTransfer.dropEffect = 'copy'; +}, false); +drop.addEventListener('dragover', (e) => { + e.stopPropagation(); + e.preventDefault(); + e.dataTransfer.dropEffect = 'copy'; +}, false); +drop.addEventListener('drop', (e) => { + e.stopPropagation(); + e.preventDefault(); + readFile(e.dataTransfer.files); +}, false);