from sys import stderr, argv; from base64 import b64encode, b64decode; from py_mini_racer import MiniRacer; with open("xlsx.full.min.js", "rb") as f: sheetjs = f.read().decode("utf-8"); with open(argv[1], "rb") as f: file_data = b64encode(f.read()).decode("ascii"); ctx = MiniRacer(); global_scope = ctx.eval("this"); ctx.eval(sheetjs); version = ctx.eval("XLSX.version"); print(f"SheetJS Version: {version}", file=stderr); ctx._ctx.set_object_item(global_scope, "fileData", file_data); ctx.eval("var wb = XLSX.read(fileData, {type:'base64'});"); csv = ctx.eval("XLSX.utils.sheet_to_csv(wb.Sheets[wb.SheetNames[0]]);"); print(csv); xlsb = ctx.eval("XLSX.write(wb, {type: 'base64', bookType: 'xlsb'})"); with open("SheetJSMiniRacer.xlsb", "wb") as f: f.write(b64decode(xlsb)); ctx.close();