Obba provides a bridge from spreadsheets to Java classes. With Obba, you can easily build spreadsheet GUIs (Excel or OpenOffice) to Java code. Its main features are:
* Loading of arbitrary jar or class files at runtime through an spreadsheet function.
* Instantiation of Java objects, storing the object reference under a given object label.
* Invocation of methods on objects referenced by their object handle, storing the handle to the result under a given object label.
* Asynchronous method invocation and tools for synchronization, turning your spreadsheet into a multi-threaded calculation tool.
* Allows arbitrary number of arguments for constructors or methods (avoids the limitation of the number of arguments for Excel worksheet functions).
* Serialization and de-serialization (save Serializable objects to a file, restore them any time later).
* All this though spreadsheet functions, without any additional line of code (no VBA needed, no additional Java code needed).
For a more detailed introduction see the Obba documentation
Components
Obba is small.
Obba for Excel consists of three files (these files will be installed by an an installer Install Obba for Excel.exe):
* Obba.xla: An Excel Add-in providing workbook functions like obMake(), obCall(), obGet().
* Obba.dll: The bridge from Excel to Java.
* Obba.jar: The Java object handler and the Obba control panel.
Obba for OpenOffice consists of one file:
* Obba.oxt: The Obba Add-in including the OpenOffice adapter and Obba.jar (the Java object handler and the Obba control panel).
Your users want to customize formulas. They know Excel or OpenOffice.
// Compile price finding factory and strategy implementation from spreadsheet:
EngineBuilder builder = SpreadsheetCompiler.newEngineBuilder();
builder.loadSpreadsheet( new File( PATH, "CustomPriceFormula.xls" ) );
builder.setFactoryClass( PriceFinderFactory.class );
builder.bindAllByName();
Engine engine = builder.compile();
PriceFinderFactory factory = (PriceFinderFactory) engine.getComputationFactory();
// Use it to compute a line item price:
LineItem item = getCurrentLineItem();
PriceFinder priceFinder = factory.newInstance( item );
BigDecimal price = priceFinder.getPrice();
Compile parametrized spreadsheets directly to bytecode.
* No need to have Excel, OpenOffice, or a JDK installed.
* Native speed, thread safe execution.
* Bind directly to your computation strategy interfaces.
* Using double, or BigDecimal for financial applications.
* Available under the GPL and commercially (details).
Download OpenOffice.org for Mac OS X OpenOffice.org Product: OpenOffice.org Aqua Development Preview is not ready for prime time but worth waiting till it's ready. Hopefully soon!