Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
2 changed files
with
73 additions
and
88 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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; | ||
}); | ||
}; | ||
|
||
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 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'})); | ||
}; | ||
})(); | ||
|
||
(function() { | ||
var drop = document.getElementById('drop'); | ||
|
||
function handleDrop(e) { | ||
e.stopPropagation(); | ||
e.preventDefault(); | ||
do_file(e.dataTransfer.files); | ||
} | ||
reader.readAsArrayBuffer(f); | ||
}; | ||
|
||
function handleDragover(e) { | ||
e.stopPropagation(); | ||
e.preventDefault(); | ||
e.dataTransfer.dropEffect = 'copy'; | ||
} | ||
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])); | ||
}; | ||
|
||
drop.addEventListener('dragenter', handleDragover, false); | ||
drop.addEventListener('dragover', handleDragover, false); | ||
drop.addEventListener('drop', handleDrop, false); | ||
})(); | ||
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() { | ||
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); | ||
})(); | ||
// add event listeners | ||
const readBtn = document.getElementById('readBtn'); | ||
const readIn = document.getElementById('readIn'); | ||
const exportBtn = document.getElementById('exportBtn'); | ||
const drop = document.getElementById('drop'); | ||
|
||
(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); |