Wie aus Excel-Mappen Java-Programme werden

28.09.2007
Die Software "xAlerator" belässt Fachanwendern ihren Excel-Arbeitsplatz, wandelt diesen jedoch in einen reinen Editor zur Erzeugung von Java-Programmen um.

Die Tabellenkalkulation von Microsoft gehört nach wie vor zu den beliebtesten Arbeitsmitteln so mancher Fachabteilung. Zum Beispiel im Versicherungsbereich, wo etwa Aufgaben der Lebensversicherungsmathematik von Fachanwendern häufig in Excel gelöst werden. Aus ihrer Projekterfahrung berichtet die Münchner Firma Xapio, dass solche Excel-Programme, vor allem wenn sie im größeren Zusammenhang wie dem Profit-Testing benötigt werden, vielfach an ihre Grenzen stoßen. Aber meistens nur "so gerade eben", was letztlich dazu führt, dass man an der Tabellenkalkulation festhält.

Excel als Editor für xAlerator: Hier das Beispiel einer Mitarbeitertabelle, aus der die Jubilare eines Monats gefiltert werden sollen.
Excel als Editor für xAlerator: Hier das Beispiel einer Mitarbeitertabelle, aus der die Jubilare eines Monats gefiltert werden sollen.

Bei komplexeren Aufgaben wird dies jedoch problematisch, denn zur Bearbeitung müsste das Projekt eigentlich modularisiert werden. Wer ausschließlich in Excel arbeitet, tut sich schwer, derart diffizile Zusammenhänge innerhalb einer Arbeitsmappe darzustellen. Werden mehrere Workbooks verwendet, ergibt sich das Problem, dass besonders bei Datenbankzugriffen die einzelnen Workbooks zwar mit Daten gefüllt werden, der flexible Austausch dieser Informationen im Sinn der Gesamtanwendung jedoch nicht möglich ist. Der Versuch, sich in komplexeren Fällen mit Visual Basic zu behelfen, stellt laut Xapio oft keine Lösung dar, weshalb der Hersteller einen Ansatz suchte, bei dem der nichtprozedurale Anteil einer Aufgabe so weit wie möglich erhalten bleibt und es nur dann zur Programmierung kommt, wenn dies unvermeidlich ist.

Die Lösung sah für Xapio so aus: Der Prozess wird in Excel als Editor anhand von Beispieldaten dargestellt (Calculation by Example). Hat die Arbeitsmappe eine Schnittstellendefinition, weil sie als Unterprogramm oder Service verwendet werden soll, legt man als Aufrufparameter fest, welche Daten beziehungsweise Ranges übergeben werden sollen, wo die Empfangsbereiche liegen und trägt die entsprechenden Beispieldaten ein. Auch die in Excel mit MS-Query formulierten Datenbankzugriffe werden lediglich in Form eines Beispiels editiert. Anschließend wird die gesamte Excel-Mappe über die "Speichern-unter"-Funktion in eine XML-Datei umgewandelt und in den von Xapio entwickelten Java-Generator xAlerator eingelesen.

Dieser analysiert die XML-Datei, übernimmt die SQL-Befehle und Schnittstellendefinitionen und generiert daraus kompilierte Java-Module. Erst jetzt geht es "ernsthaft zur Sache", so der Hersteller, denn was mit einer oder mehreren Zeilen vorexerziert wurde, soll das Java-Programm für die ganze Datenmenge erledigen. Zur Ergebnisdarstellung erzeugt xAlerator wiederum eine XML- oder xls-Datei, die sich an der Eingabemaske orientiert. Zu berücksichtigen ist allerdings, dass das in einer Zelle dargestellte Datenaufkommen nun wesentlich größer ist, da es statt der wenigen Beispieldaten das Ergebnis der gesamten Berechnung abbildet.

Um die xAlerator-Makros auf dem Spreadsheet laufen zu lassen und den Generator anzustoßen, hat Xapio über C# noch einige Eingriffe in Excel vorgenommen. Das Produkt selbst ist in Java geschrieben und klinkt sich zum Beispiel mit dem Menüpunkt "Generiere" in die Tabellenkalkulation ein. (ue)

Forderungen an xAlerator

  • Logik, die sich mit einem herkömmlichen Tabellenkalkulator (Excel) formulieren lässt, soll auch mit xAlerator in der gleichen Weise dargestellt werden, der Programmaufbau also dem zweidimensionalen Schema des Spreadsheets folgen.

  • Was in einer Tabellenkalkulation selbst nicht machbar ist, zum Beispiel Datenbankausgaben und Datenverdichtungen, soll Tool-seitig in Excel-geläufiger Manier möglich sein.

  • Das System soll Modularisierung nicht nur erlauben, sondern nahelegen.

  • Das System sollte nach Möglichkeit keine Beschränkungen in Bezug auf den Datenumfang und die Größe der Prozesslogik aufweisen.

  • Das System ist nicht dialogorientiert, es sollte aber Ergebnisse (Grafiken und Pivottabellen) als Output erzeugen können.

  • Die vom System generierten Java-Module müssen in anderen Anwendungen zum Beispiel als Klasse oder Web-Service verwendbar sein, ebenso umgekehrt.