XL4J - Native Excel XLL Add-ins in Java

THIS PROJECT IS PRE-RELEASE, THE BETA RELEASE IS COMING SOON (DELAYED DUE TO LAST MINUTE ISSUE)

Sign up to be notified when the project is opened for public beta or visit the XL4J Commercial Site for more information.

Introduction

XL4J is a Java and native code library that allows you to build native-quality Excel Add-ins using only standard Java tooling (Maven + JDK). It lets you write high performance custom Excel functions and commands for end users, but also works as a dynamic rapid application development tool in its own right.

In addition to supporting the standard Excel types (numbers, strings, dates, booleans, etc.) it also supports Java objects in the form of object handles. This means you can store any complex object in a single Excel sheet cell, allowing much more complex applications. A background incremental garbage collector prevents discarded and overwritten objects from hanging around.

Table of contents

Objectives

Requirements

Features

Writing Excel user-defined functions

MyAdd

See the tutorial for more complex examples that return objects and arrays, including documentation and more.

Calling constructors and methods on Java objects

The follwing example allows you to create and show a Swing JFrame with no coding at all:

  A B
1 =JConstruct("javax.swing.JFrame", "My Window Title") =JConstruct("javax.swing.JButton", "Click me!")
2 =JMethod(A1, "setSize", 300, 200)  
3 =After(A2, JMethod(A1, "add", B1))  
4 =After(A3, JMethod(A1, "setVisible", TRUE))  

which looks like this in Excel - note the object handles with the » prefix followed by the type and the handle number:

JFrame in Excel

Breaking this example down:

Evaluating the sheet results JFrame appearing:

JFrame

Configuration and Easy Logging Access

By default there are toolbar icons for opening the settings dialog, and opening the Java and C++ Logs in Notepad (or default .log file viewer). These can be disabled for end users if preferred.

Toolbar

Deployment features

Add-in features

Roadmap

Features in development

There are various architectural choices that have been made to enable specific future features. These features can be considered the highest priority:

Features in the pipeline

These are features we know how to implement but aside from identifying what is required, nothing has been started yet.

Limitations

There are a few limitations with the current build. These should slowly disappear with time.