24 lines
706 B
Ruby
24 lines
706 B
Ruby
|
#!/usr/bin/env ruby
|
||
|
# ExecSheetJS.rb (c) SheetJS LLC -- https://sheetjs.com
|
||
|
require "execjs"
|
||
|
require "base64"
|
||
|
|
||
|
source = File.open("xlsx.full.min.js").read;
|
||
|
context = ExecJS.compile(source);
|
||
|
puts context.eval("XLSX.version");
|
||
|
|
||
|
data = Base64.strict_encode64(File.open(ARGV[0]).read);
|
||
|
result = context.call(<<EOF, data);
|
||
|
function(data) {
|
||
|
var wb = XLSX.read(data, {type: 'base64'});
|
||
|
var ws = wb.Sheets[wb.SheetNames[0]];
|
||
|
/* to avoid re-parsing, CSV and XLSB are written in the same call */
|
||
|
return [
|
||
|
XLSX.utils.sheet_to_csv(ws),
|
||
|
XLSX.write(wb, {bookType: "xlsb", type: "base64"})
|
||
|
];
|
||
|
}
|
||
|
EOF
|
||
|
puts result[0];
|
||
|
xlsb = Base64.strict_decode64(result[1]);
|
||
|
File.write("sheetjsw.xlsb", xlsb, mode: "wb");
|