forked from sheetjs/docs.sheetjs.com
29 lines
809 B
Python
29 lines
809 B
Python
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(); |