forked from sheetjs/sheetjs
		
	- BIFF5 write number formats and other features - XLSX/XLSB/BIFF8 Suppress "Number stored as Text" errors - codename awareness (fixes #992 h/t @samusstrike) - updated CFB to 1.0.3 - demo refresh
		
			
				
	
	
		
			38 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
| /* xlsx.js (C) 2013-present  SheetJS -- http://sheetjs.com */
 | |
| /* This only works in a playground, see SheetJSCore.swift for standalone use */
 | |
| import JavaScriptCore;
 | |
| import PlaygroundSupport;
 | |
| 
 | |
| /* build path variable for the library */
 | |
| let shared_dir = PlaygroundSupport.playgroundSharedDataDirectory;
 | |
| let lib_path = shared_dir.appendingPathComponent("xlsx.full.min.js");
 | |
| 
 | |
| /* prepare JS context */
 | |
| var context: JSContext! = JSContext();
 | |
| var src = "var global = (function(){ return this; }).call(null);";
 | |
| context.evaluateScript(src);
 | |
| 
 | |
| /* load library */
 | |
| var lib = try? String(contentsOf: lib_path);
 | |
| context.evaluateScript(lib);
 | |
| let XLSX: JSValue! = context.objectForKeyedSubscript("XLSX");
 | |
| 
 | |
| /* to verify the library was loaded, get the version string */
 | |
| let XLSXversion: JSValue! = XLSX.objectForKeyedSubscript("version")
 | |
| var version  = XLSXversion.toString();
 | |
| 
 | |
| /* parse sheetjs.xls */
 | |
| let file_path = shared_dir.appendingPathComponent("sheetjs.xls");
 | |
| let data: String! = try String(contentsOf: file_path, encoding: String.Encoding.isoLatin1);
 | |
| context.setObject(data, forKeyedSubscript: "payload" as (NSCopying & NSObjectProtocol)!);
 | |
| src = "var wb = XLSX.read(payload, {type:'binary'});";
 | |
| context.evaluateScript(src);
 | |
| 
 | |
| /* write to sheetjsw.xlsx  */
 | |
| let out_path = shared_dir.appendingPathComponent("sheetjsw.xlsx");
 | |
| src = "var out = XLSX.write(wb, {type:'binary', bookType:'xlsx'})";
 | |
| context.evaluateScript(src);
 | |
| let outvalue: JSValue! = context.objectForKeyedSubscript("out");
 | |
| var out: String! = outvalue.toString();
 | |
| try? out.write(to: out_path, atomically: false, encoding: String.Encoding.isoLatin1);
 |