Als Programmierer
kann man sich bei den Jungs vom Marketing sehr beliebt machen, wenn man ihnen
zur Datenanalyse Microsoft Excel-Worksheets anstatt HTML-Webseiten zur Verfügung
stellt. Das Erzeugen von Excel-Dateien ist mit ColdFusion relativ einfach.
Eine Möglichkeit
besteht darin, einen HTML-Stream zur erzeugen, der von Excel in eine XLS-Datei
'on the fly' konvertiert werden kann. Dabei muss allerdings auf dem Client-Rechner
Excel97 (oder grösser) installiert sein.
Das folgende Beispiel zeigt, wie einfach so eine Ausgabe zu realisieren ist:
<cfcontent type="application/vnd.ms-excel">
<cfoutput>
<TABLE border="1">
<TR>
<!---spaltenueberschrift erzeugen--->
<TD><b>Feld1</b></TD>
<TD><b>Feld2</b></TD>
<TD><b>Feld3</b></TD>
</TR>
<!---zufaellige zeileanzahl erzeugen--->
<cfset line=RandRange(10,20)>
<!---endwert fuer die excelfunktionen--->
<cfset ende=line+1>
<!---datensätze simulieren--->
<cfloop index="i" from="1" to="#line#">
<TR>
<TD>#i#</TD>
<TD>#RandRange(1,20)#</TD>
<TD>#RandRange(1,20)#</TD>
</TR>
</cfloop>
<!---tabellefooter mit farbe erzeugen--->
<TR bgcolor="cccccc">
<TD>=ANZAHL(A2:A#ende#)</TD>
<TD>=MITTELWERT(B2:B#ende#)</TD>
<TD>=SUMME(C2:C#ende#)</TD>
</TR>
</TABLE>
</cfoutput>
In
der ersten Zeile setzen wir den MIME-Typ (Multipurpose Internet Mail Extensions)
des zurückgegebenen Dokumentes.
Damit können
wir das Dokument explizit mit einer Anwendung verknüpfen, in diesem Fall Microsoft
Excel. Der Browser erkennt an dieser Zeile den Datentyp und kann entsprechen
darauf reagieren. Netscape öffnet in diesem Fall Excel, wärend der
Internetexplorer (ab 3) im allgemeinen in der Lage ist, die Exceloberfläche
in den Browser zu integrieren.
Jetzt müssen wir nur noch die passenden Daten erzeugen, die Excel verarbeiten
kann. Das ist in diesem Fall relativ einfach, denn Excel kann einen normalen
HTML-Text interpretieren und selbsständig in ein Excelsheet konvertieren.
Wir erzeugen also
mit den üblichen Mitteln eine normale HTML-Tabelle.
In der ersten Reihe werden die Tabellenüberschriften in Fett-Schrift erzeugt,
dann erfolgt zeilenweise eine Datenausgabe, diesmal kein CFQUERY sondern reine
Zufallszahlen. Dabei werden 3 Spalten und eine dynamische Anzahl von Zeilen
geschrieben. Farb- und Formdefinitionen (z.B. Border) sind möglich und
werden entsprechend konvertiert.
Excel kennt viele
Funktionen und bietet einiges, um automatisch Berechnungen in bestimmten Spalten
auszuführen. In der letzten Tabellenzeile ist im Beispielcode zu sehen,
dass diese Funktionen ebenfalls in den HTML-Stream integriert werden können.
Hier wird automatisch an das Ende der Tabelle einmal die Anzahl der enthaltenene
Tabellenzeilen (Spalte A), der Mittelwert der Werte aus Spalte B und die Summe
der Werte aus Spalte C berechnet und ausgegeben. Dabei ist zu beachten, dass
in den Funktionen dynamisch das Ende der Zeile integriert werden muss.
Bei einem
Seitenaufruf kann natürlich nur ein Worksheet gefülllt werden.