forked from sheetjs/sheetjs
		
	- add BOM to `stream.to_csv` (fixes #1024 h/t @hr5959) - `utils.format_cell` type (h/t @victorj2307) - duktape niggles - demo cleanup
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
/* xlsx.js (C) 2013-present  SheetJS -- http://sheetjs.com */
 | 
						|
/* vim: set ts=2: */
 | 
						|
package com.sheetjs;
 | 
						|
 | 
						|
import java.lang.Integer;
 | 
						|
import java.util.Scanner;
 | 
						|
import java.io.IOException;
 | 
						|
import java.io.File;
 | 
						|
import org.mozilla.javascript.Context;
 | 
						|
import org.mozilla.javascript.Function;
 | 
						|
import org.mozilla.javascript.NativeObject;
 | 
						|
import org.mozilla.javascript.Scriptable;
 | 
						|
 | 
						|
public class SheetJS {
 | 
						|
  public Scriptable scope;
 | 
						|
  public Context cx;
 | 
						|
  public NativeObject nXLSX;
 | 
						|
 | 
						|
  public SheetJS() throws Exception {
 | 
						|
    this.cx = Context.enter();
 | 
						|
    this.scope = this.cx.initStandardObjects();
 | 
						|
 | 
						|
    /* boilerplate */
 | 
						|
    cx.setOptimizationLevel(-1);
 | 
						|
    String s = "var global = (function(){ return this; }).call(null);";
 | 
						|
    cx.evaluateString(scope, s, "<cmd>", 1, null);
 | 
						|
 | 
						|
    /* eval library */
 | 
						|
    s = new Scanner(SheetJS.class.getResourceAsStream("/xlsx.full.min.js")).useDelimiter("\\Z").next();
 | 
						|
    //s = new Scanner(new File("xlsx.full.min.js")).useDelimiter("\\Z").next();
 | 
						|
    cx.evaluateString(scope, s, "<cmd>", 1, null);
 | 
						|
 | 
						|
    /* grab XLSX variable */
 | 
						|
    Object XLSX = scope.get("XLSX", scope);
 | 
						|
    if(XLSX == Scriptable.NOT_FOUND) throw new Exception("XLSX not found");
 | 
						|
    this.nXLSX = (NativeObject)XLSX;
 | 
						|
  }
 | 
						|
 | 
						|
  public SheetJSFile read_file(String filename) throws IOException, ObjectNotFoundException {
 | 
						|
    /* open file */
 | 
						|
    String d = JSHelper.read_file(filename);
 | 
						|
 | 
						|
    /* options argument */
 | 
						|
    NativeObject q = (NativeObject)this.cx.evaluateString(this.scope, "q = {'type':'binary', 'WTF':1};", "<cmd>", 2, null);
 | 
						|
 | 
						|
    /* set up function arguments */
 | 
						|
    Object args[] = {d, q};
 | 
						|
 | 
						|
    /* call read -> wb workbook */
 | 
						|
    Function readfunc = (Function)JSHelper.get_object("XLSX.read",this.scope);
 | 
						|
    NativeObject wb = (NativeObject)readfunc.call(this.cx, this.scope, this.nXLSX, args);
 | 
						|
 | 
						|
    return new SheetJSFile(wb, this);
 | 
						|
  }
 | 
						|
 | 
						|
  public static void close() { JSHelper.close(); }
 | 
						|
}
 | 
						|
 |