forked from sheetjs/docs.sheetjs.com
		
	
		
			
	
	
		
			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"); |