Obba
A Java Object Handler for Excel and OpenOffice.
About Obba
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
Advantages
No Glue Code
The concept of Obba is different from interfaces like XLL4J, XLW, XLLoop, ExcelDNA, etc. in that it requires no glue code to link the spreadsheet to the library. Objects are instantiated by their original constructor. A spreadsheet specific factory method is not necessary.
Platform Independent
The Obba spreadsheet functions are available in Excel (running on Windows) and in OpenOffice (running on Windows, Mac OS X, Linux, etc.). Hence, if your external library is platform independent, then your spreadsheet is platform independent too (within the platforms supported by OpenOffice, assuming that your spreadsheet does not rely on other technologies than OpenOffice, Obba and your library).
Licensing
The following applies to Version 1.x:
Per User License (Individual License)
|
Trial license / Shareware license:
|
|
|
The unregistered version may be used for a trial period of 30 days. After this period you are allowed to use the unregistered version for personal, non-commercial use only.
Note: The unregistrated version will show up a splash screen forcing you to wait a few seconds. This delay will increase after 30 days.
|
|
License for personal / private use:
|
|
Donationware. To acquire a license for personal / private use donate an arbitrary amount via PayPal.
|
|
License for commercial / corporate use:
|
|
The license for commercial and/or corporate use is 49 Euro per user. Pay via PayPal.
|
|
Developer license for commercial / corporate use:
|
|
The developer license is 99 Euro per developer. Pay via PayPal. You may bundle the library with your own library and redistribute the package. The developer license includes 5 licenses for commercial / corporate use for your clients.
|
Per Year License (Site License)
|
Site license for commercial / corporate use:
|
|
The site license is 99 Euro per year. Pay via PayPal.
|
|
Developer site license for commercial / corporate use:
|
|
The developer site license is 199 Euro per year. Pay via PayPal. You may bundle the library with your own library and redistribute the package. The developer site license includes 5 site licenses for commercial / corporate use for your clients.
|
Note: You need to keep your PayPal notification of payment. It is your proof of purchase.
Download, Installation and System Requirements
Download
Obba is distributed as ZIP archive Obba.zip. Current version is 1.8.12 (January, 2009).
Installation
To install Obba:
-
Download and unzip the Obba.zip archive.
-
To install Obba for Excel/Windows:
-
Open the Folder "Obba for Excel for Windows"
-
Launch "Install Obba.exe".
-
To install Obba for OpenOffice:
-
Open the Folder "Obba for OpenOffice"
-
Open "Obba.oxt".
Note: On Mac OS X: Close OpenOffice after the add-in has be installed. Otherwise OpenOffice will hang. (This appears to be a bug in OpenOffice for OS X, not in Obba).
Your are done! Now, try one of the Demos in the corresponding Demo folder.
Note: The Obba for Excel installer will try to locate your current Java Runtime Environment and install Obba there. If you want to use Obba with a specific Java Runtime Environment set the environment variable JRE_HOME before launching the installer. The installer will then use the Java Runtime Environment specified by JRE_HOME.
System Requirements
System requirements for Obba for Excel are:
-
Java 1.5 Runtime
-
Microsoft Windows 2000 or better
-
Microsoft Excel 2000 for Windows or better
System requirements for Obba for OpenOffice are:
-
OpenOffice 3.0 (any platform)
First Steps, Documentation
First Steps
Once Obba is installed, it is available in Excel/OpenOffice after launching. For examples how to use Obba check out the files in the Demos folder.
As a first step you should try out the Date Demo which uses java.lang.Date
to demonstrate object instantiation and method invocation. It also gives an example of transient object handles.
Next, try the Normal Distribution Demo. It loads an external jar (here Apache's commons-math.jar) and uses a class from it to
calculate the cumulative normal distribution. There are two version of this excel sheet. The one named "concurrent" invokes the
calculations concurrently.
Documentation
A documentation is available online. You may also access the Obba documentation offline via the Obba control panel's "Help" menu.
The concept behind Obba is described in the paper
-
Fries, Christian P.: Comments on Handling Objects in Spreadsheets, http://www.christian-fries.de/objectinspreadsheets.
Issues
Obba for Excel
- Transient object handle not released. Sometimes a transient object handle is not released. It appears as if in formulas like =f(g(x)) excel sometimes evaluates g(x) a second time, but does not evaluate f. The only way to cope with this is to release the objects manually using obRelease.
Obba for OpenOffice
All Platforms
- OpenOffice not loading Libraries with relative path. The spreadsheet function obAddJar, obAddAllJar, obAddClasses show a strange behavior under OpenOffice 3.0: If used with a relative path, i.e., if their second argument is TRUE(), then the path is not expanded to an absolute path, if the spreadsheet is calculated at load time. The functions do work when used or edited after the spreadsheet has been fully loaded. The problem is due a bug in OpenOffice which does not allow to resolve the path of the spreadsheet at load time. The fix is even stranger: Replace the TRUE() in the second argument by IF(TODAY();TRUE();TRUE()). This will apparently force OpenOffice to evaluate the cell at a later stage in the load process.
OpenOffice 3.0 for Mac OS X
- Obba Control Panel on Mac OS X. The Obba Control Panel does not work in OpenOffice 3.0 for Mac OS X. This is due to be a bug in OpenOffice 3.0. Note: Due to this bug you will be unable to enter your registration code using the Obba Control Panel. As workaround: 1) Ensure that Obba for OpenOffice is installed. 2) Launch an Obba sheet (e.g. Demos/Date Demo/Date.odt) in OpenOffice at least once. 3) Locate the file "Obba.properties" (use spotlight or check the developer documentation). 4) Edit the file "Obba.properties" and enter your registration date there.
- OpenOffice hangs when Opening Spreadsheet for the First Time. After the Obba addin (Obba.oxt) has been installed in OpenOffice for Mac OS X, you need to quit OpenOffice and restart it. Otherwise OpenOffice will hang.
Developer Documentation
The developer documentation gives you instructions on how to bundle Obba with your application (i.e. building your own installer). This includes automatic installation of a registration code.
Feedback and Feature Requests
Please send feedback and feature requests to email@christian-fries.de.