Startseite > Online-Artikel

Online-Artikel

Mit XSL-Vorlage Excel-Datei aus XML-Datei erzeugen

21.01.2005

XSL kann nicht nur HTML-Dateien aus XML erzeugen. Mit der richtigen XSL-Transformation können Sie auch Tabulator-separierte Tabellen erzeugen.
Für diese Umwandlung von XML-Daten in eine Excel-Datei bieten sich mehrere Möglichkeiten an. Die einfachste lautet sicher: Verwenden Sie Excel 2003, denn das öffnet XML-Dateien.

Wenn aber das Ziel eine frühere Version von Excel ist, muss die XML-Datei in eine für Excel lesbare Form gebracht werden. Das kann auch wiederum auf verschiedene Art und Weise passieren. Ein Weg wäre das Laden der XML-Datei in ein DataSet. Anschließend durchlaufen foreach-Schleifen die Zellen des DataSet und schreiben über eine ADO.NET-Verbindung die Daten in eine Excel-Datei.

Wesentlich weniger Programmiererei fällt an, wenn Sie die XML-Datei über eine XSL-Transformation in eine Komma-separierte Liste umwandeln.

Die Transformationsdatei sieht etwa so aus:

<xsl:stylesheet 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="no"
cdata-section-elements="beschreibung" />
<xsl:template match="eventList">
<xsl:apply-templates select="rubrik"/>
</xsl:template>
<xsl:template match="rubrik">
"<xsl:value-of select="@titel"/>"
<xsl:apply-templates select="event"/>
</xsl:template>
<xsl:template match="event">"<xsl:value-of select="startDatum" />"
"<xsl:value-of select="thema" />" "<xsl:value-of select="beschreibung"/>"
"<xsl:value-of select="preis" />" "<xsl:value-of select="url" />"
"<xsl:value-of select="ort" />"<xsl:text>
</xsl:text></xsl:template>
</xsl:stylesheet>


Wichtig: Die Einträge <xsl:value-of select="startDatum" /> und <xsl:value-of select="thema" /> sind durch Tabs getrennt. Das eigentliche Programm zur Konvertierung ist winzig:

XslTransform xslt = new XslTransform();
xslt.Load(XSDFileLabel.Text);
XPathDocument doc = new XPathDocument(InFileLabel.Text);
XmlTextWriter writer =
new XmlTextWriter(OutFileLabel.Text, System.Text.Encoding.Unicode);
xslt.Transform(doc, null, writer, null);
writer.Close();


Das Ergebnis kann sofort in Excel geladen werden und die Daten werden richtig in die Zellen sortiert.


Sie finden diesen Artikel interessant? Dann helfen Sie anderen ihn zu finden und kicken Sie ihn bei www.dotnet-kicks.de!

Login
Sie sind nicht eingeloggt.

Login & Registrierung
Abo bestellen




Anzeige







Newsletter
Tragen Sie Ihre E-Mailadresse für den kostenlosen Newsletter von dotnetpro ein.


Umfrage
Würden Sie sich zutrauen, einen Compiler zu schreiben?





Ergebnis anzeigen