aus xml mit xsl eine xls erstellen

  • #1
A

aline234

Guest
Hallo!

Hab leider keine Ahnung bezgl. dem Thema, soll mich aber einarbeiten ;)

Wie kann man aus einer xml-Datei eine Excel-Datei machen? Ich weiß, dass man das mit xsl bewerkstelligen kann, aber leider nur nicht wie. Mir würde davon nur das Grundgerüst reichen, die Details kann ich dann auch noch selber einfügen. Mir fehlt eben der Ausgangspunkt.

Wäre nett, wenn das jemand posten könnte oder mir nen Link geben kann, wo das verständlich erklärt wird.

Hab mich totgegoogled!  :'(

Aline
 
  • #2
Hab ich auch mal schnell. Also nach 2 Minuten hatte ich zumindest folgendes Tool gefunden:



Ich weiß das es auch direkt geht ohne den Umweg über ein Tool. Bin aber momentan nicht im Bilde wie genau das läuft.

Was hast du eigentlich vor? Vieleicht kann man dir über diese Fragestellung besser helfen.
 
  • #3
Okay, dann muss ich mich wohl mal outen ::)

Also ich bin ein Fachinformatiker-Azubi und hab grade Praktikum. Und bei mir auf Arbeit gibt es ein Programm wo Statistiken in Form von Tabellen drin stehen. Da sind einige mit reinem HTML und auch einige mit xml realisiert worden. Mein Ausbilder hat mir die Aufgabe gegeben, rauszufinden, ob es irgendwie möglich ist, per Klick auf einen Link die grade aktuell angezeigte Tabelle in Excel zu öffnen. Das Problem dabei ist, ist, dass man die Tabelle per Drop-Down-Felder noch verändern und anpassen kann. Und wenn ich die eigentlich xml-datei einfach so mit Excel2002 öffne, werden ja sozusagen die Standard-Daten geladen und nich die veränderte. Also muss das als Script passieren.
Jedoch kann ich im Internet einfach keines finden. Ich find auch kein richtiges xsl-Tutorial, wo mal konkret drinsteht, was man genau machen muss, wenn man mal nicht nur html haben will, sondern bene zum Beispiel ein xls oder ein pdf.
Und ein Tool darf ich nicht benutzen, würde sowieso in dem Fall nicht gehen.

So, das hab ich also vor ;D
 
  • #4
Also zum Thema XML Transformation findet google eine ganze Menge  ;D



Das Transformieren würde ich per XSLT machen!

Was recht easy zu machen sein sollte ist eine Transformation von XML nach CSV (). Die kannst du auch Problemlos in Excel öffnen und verändern. PDF zu erstellen ist auch recht easy. Ich persönlich habe allerdings momentan auch null Plan wie du eine XML DIRKET nach XLS wandeln kannst.

Und zum Thema XML nach CSV weiß ich das googel VIEL zu bieten hat. (auch viel gutes).



P.S. Bei einigen Links musst du leider auf den Google Cache zurück greifen!
 
  • #5
Also nach csv hab ich auch noch nich geguckt, also werd ich da mal nachforschen.

Problem wegen Google: Bei mir auf Arbeit gibt es einen sehr sehr strengen Proxy und eine sehr sehr strenge Firewall. Noch dazu ne Gefängnismäßige Überwachung der Internetvorgänge. Demnach ist halb Google gesperrt oder nicht erreichbar. Für mich jedenfalls.

na ich werd mal schaun und wenn ich dann trotzdem nix hinkriege meld ich mich eben noch mal ;)
 
  • #6
aline234 schrieb:
Also nach csv hab ich auch noch nich geguckt, also werd ich da mal nachforschen.

Problem wegen Google: Bei mir auf Arbeit gibt es einen sehr sehr strengen Proxy und eine sehr sehr strenge Firewall. Noch dazu ne Gefängnismäßige Überwachung der Internetvorgänge. Demnach ist halb Google gesperrt oder nicht erreichbar. Für mich jedenfalls.

na ich werd mal schaun und wenn ich dann trotzdem nix hinkriege meld ich mich eben noch mal ;)

Mit der Firewall und dem Proxy sieht es bei mir genauso aus. Aber der googel Cache hilft das sehr oft weiter *gg*. Der präsentiert nämlich den Inhalt der Seite mit einem Header Eintrag von googel! Blöd ist nur (bei unserem neuen Zusatzfilter) der auch den INHALT auf gewisse Schlagwörter reagiert: Dann wird auch ab und an mal der google Cache gesperrt. Aber so restriktiv ist der Content Filter zum Glück nicht eingestellt.

Ich würde es jedenfalls mit CSV probieren. Ist wirklich nicht all zu schwer!
 
  • #7
So, da bin ich wieder  ;D

Also ich hab mir jetz mal das beste angesehen, die ganzen Konverterseiten rausgefiltert und dann bleibt da auch nich viel übrig.

Was ich an der ganzen Sache nicht verstehe is, wie ich dann nach der Umwandlung das Umgewandelte in eine richtige Datei speichern kann. Denn bei den meisten Beispielen wird das ganze auch nur als Kommaliste im Browser angezeigt. Und ich hab ja keine Ahnung wo ich da jetz einbaue, dass ich das ganze jetz als .csv bekomme.

Google kann ich auch langsam nich mehr sehen. nach den 8 Stunden von gestern und dann auch noch heute bekomm ich davon heute nacht bestimmt Alpträume  ;)

Ach ja, der Google Cache ist bei mir größtenteils auch gesperrt. Eben wegen der Schlagwörter.
jedenfalls war das bei den seiten so, wo ich es ausprobiert hab ;)
 
  • #8
Ähm also das ist doch echt nicht soooo schwer oder?

Auf ist das doch alles fein erklärt.

Also, du entwirfst zuerst ein XSLT Schema, das die XML Daten wie du es wünschst in CSV separiert und ausgiebt. Danach übergibst du die XML Datei zusammen mit dem XSLT Schema an einen XML Prozessor. Diesen fütterst du mit dem Zusatzparameter das er daraus eine Datei mit der Endung CSV (oder sonstwas) an einem von dir deffinierten Ort ablegt.

Der XML Prozessor ist im Grunde das gleiche / etwas ähnliches die der PHP Parser!

Was verstehst du denn konkret nicht?
 
  • #9
Ich glaube die Sache mit dem XML Prozessor habe ich noch nichtso ganz verstanden. ::)
 
  • #10
P.S. Zum besseren Verständniss! (Beispiele von o.g. Link)

index.xml
Code:
<?xml version = 1.0?>
<?xml-stylesheet type=text/xsl href=index.xsl?>
<gazetteer>
<place>
<name>
Wolverhampton
</name>
<county>
West Midlands
</county>
<ngr>
<easting>390
</easting>
<northing>298
</northing>
</ngr>
<geographical>
<latitude>
52.583
</latitude>
<longitude>
-2.133
</longitude>
</geographical>
</place>
<place>
<name>
Welshpool
</name>
<county>
Powys
</county>
<ngr>
<easting>
322
</easting>
<northing>
308
</northing>
</ngr>
<geographical>
<latitude>
52.667
</latitude>
<longitude>
-3.15
</longitude>
</geographical>
</place>
</gazetteer>

index.xsl
Code:
<?xml version=1.0?>
<xsl:stylesheet version = 1.0
	xmlns:xsl = [url]http://www.w3.org/1999/XSL/Transform>[/url]
<xsl:output method=text/>
<xsl:template match=place>
<xsl:value-of select=normalize-space(name)/>,<xsl:value-of select=normalize-space(county)/>,<xsl:value-of select=normalize-space(ngr/easting)/>,<xsl:value-of select=normalize-space(ngr/northing)/>,<xsl:value-of select=normalize-space(geographical/latitude)/>,<xsl:value-of select=normalize-space(geographical/longitude)/> 
</xsl:template>
</xsl:stylesheet>

Speicher mal o.g. Beispiele ab und öffne die XML Datei mal indem du Sie per Drag und Drop in einen Browser ziehst! (Die Dateinamen stehen oben drüber)

Der IE und auch die meisten anderen aktuellen Internetbrowser haben einen XML Prozessor integriert. Sobald einer XML Datei ein XSLT Schema zugewiesen ist, stellen Sie dieses entsprechend dar (im Browser).

Wenn du aber einen seperaten XML Prozessor installiert hast (meist ein Textkonsolenprogramm) kannst du diesem per Parameter mitteilen wie die Ausgabe zu Erfolgen hat!

Ob die Ausgabe in einer Datei, oder auf dem Bildschirm oder sonstwie zu Erfolgen hat ist dem XML Prozessor egal! Er übernimmt also die Erstellung der Datei. Du musst ihn nur mit den entsprechenden Parametern füttern.

Ein Aufruf könnte z.B. (REIN FIKTIV) so aussehen

XMLPROC <PFAD ZUR XML DATEI> - <PFAD ZUM XSLT SCHEMA> /a -- <PFAD UND DATEINAME DER AUSGABEDATEI>

P.S. Schau dir mal die Bildliche Darstellung an wie die XML Transformation von statten geht.

 
  • #11
O-kay... ähhh....

Also wenn der IE den XML Prozessor integriert hat muss ich nur die .xml ausführen oder wies jetz? Aber da gibt er mir ja doch nur Text aus.

Ach man, seit gestern beschäftige ich mich mit dem Thema und so langsam krieg ich nen Nervenzusammenbruch... :eek:
Ich hab doch vorher noch nie mich mit dem ganzen Kram beschäftigt :'(
Hach ja, das praktikum hat so schön angefangen :(

Ich glaub ich raff das hier alles nich... Hilfe!
 
  • #12
Aaaallllsssooo, im IE ist zwar ein XML Prozessor integriert, der kann aber ONE AND ONLY die DARSTELLUNG im Browserfenster übernehmen. Das heißt du kannst mit dem Beispiel was ich dir oben geschildert habe eine XML Datei in eine CSV Datei wandeln. Diese wird aber nur dargestellt!!! (Das Ergebnis siehst du ja in deinem Browserfenster). Du kannst aber nicht per Shell Befehl die Automatisch irgendwo auf deinem Rechner eine CSV Datei erstellen (ohne Sie zunächst anzuzeigen).

Wenn du einen XML Prozessor installiert hast, kannst du diesen per Shell Befehl dazu bewegen aus der XML Datei (die ihr ja bereits habt bzw. anderweitigt erzeugt werden) zusammen mit einem XSLT Schema (welches von dir noch erstellt werden muss) dir eine Datei zu erzeugen. Den Namen und Die Dateiendung sowie den Ablageort musst du halt vorher festlegen.

Hier mal ein verändertes XSL Schema. Hier kannst du erkennen wozu ein XSL Schema überhaupt da ist. Es sorgt nämlich einfach nur für die Darstellung der Daten aus der XML Datei.

index.xsl
Code:
<?xml version=1.0?>
<xsl:stylesheet version = 1.0
	xmlns:xsl = [url]http://www.w3.org/1999/XSL/Transform>[/url]
<xsl:output method=text/>
<xsl:template match=place>
<xsl:value-of select=normalize-space(name)/>,<xsl:value-of select=normalize-space(county)/>,merkst du den Unterschied,<xsl:value-of select=normalize-space(ngr/easting)/>,<xsl:value-of select=normalize-space(ngr/northing)/>,Eine XSLT Datei sorgt ausschliesslich fuer die Darstellung,<xsl:value-of select=normalize-space(geographical/latitude)/>,<xsl:value-of select=normalize-space(geographical/longitude)/> 
</xsl:template>
</xsl:stylesheet>

Die XML Datei enthält die Daten die später in einer CSV Datei stehen sollen. CSV Daten haben die Eigenheit das die Einzelnen Datenfelder durch Kommas getrennt sind. Da dies in unserer XML Datei nicht der Fall ist, müssen wir die Daten Transformieren. Dazu bedienen wir uns XSLT.

Wir schreiben ein Schema das sagt, welche Felder wie aneinander gereiht werden, und das Sie durch ein , getrennt werden.

Somit haben wir ein XSLT Schema (das sagt wie das Ergebnis aussehen soll, aber keine Daten enhält) und eine XML Datei (die Daten enthält, aber in der nicht festgelegt ist wie diese Dargestellt werden sollen). Nun müssen wir beides zusammen führen.

Das Zusammenführen von Daten und dem Darstellungsmodell übernimmt der XML Prozessor.

Der schaut und sagt, okay, an erster Stelle muss der Inhalt auf Feld xy dann kommt ein, und dann der Inhalt aus Feld wz usw.

Das schreibt er dann entweder in eine Datei, oder stellt es (im Falle des Browsers) direkt dar.

Verstanden?!?!

P.S. Ich denke du bist Fachinformatik Azubi  :D ;D
 
  • #13
*lol* Ja, bin ein Fachinformatiker-Azubi, aber wie gesagt kenne ich mich mit der Materie nich wirklich aus, weil ich ja erst gestern das erste mal davon gehört hab. Also natürlich wusste ich, dasses xml gibt, aber hab mich eben noch nie damit beschäftigt.
Und wenn man dann 8 Stunden lang im Internet sich zu Informieren versucht, ... naja... yadda yadda

Okay, da hab ich ja dann nen Problem eigentlich. Weil ich brauch diese ganze Prozedur ja, dass der Benutzer seine gerade angepüasste Tabelle mit einem Klick auf einen Link als Excel-Dokument abspeichern kann. Wenn wir aber mal davon ausgehen, dass derjenige keine XML Prozessor hat (so wie ich grade), dann bringt die ganze geschichte ja überhaupt nix.
 
  • #14
Jain! Der XML Prozessor muss doch nicht auf dem Client Installiert sein. Der sollte so oder so auf dem SERVER installiert sein. Die Übergabe des XSLT Schemas und der XML Datei an den XML Prozessor (genau wie die Angabe des Outputs) realisierst du am besten über eine Scriptsprache. Z.B. PHP.

Das was du da machen sollst ist so mal eben zwischendurch nicht zu machen.

Konkreter kann ich dir leider auch nicht helfen da ich weder eure interne IT Struktur, noch deine Möglichkeiten kenne (a) deine Programmiertechnischen Möglichkeiten und b) die dir zur Verfügung stehenden Mitteln) und auch sonst keine tiefer gehenden Informationen habe.

Ich hoffe aber das dir die Infos reichen um damit zu einem (für deinen Chef) zufriedenstellenden Ergebniss zu kommen.

Wenn es dir nicht ausreicht kann ich dir nur empfehlen mal zu schauen welche Möglichkeiten du mit einer Programmiersprache deiner Wahl hast, eine XML Datei direkt ins XLS (Excel) Format zu wandeln. Vieleicht hat C++ ne API oder ne entsprechende Bibliothek dazu.
 
  • #15
Schade, ich hatte mich schon halb gefreut. PHP geht leider nich. ich werd mal nachfragen was möglich wäre.
Was für mögliche Scriptsprachen unterstützen das denn noch?

Also erstmal vielen lieben Dank für deine Hilfe, hgast mir sehr weitergeholfen!

Ich melde mich, wenn ich wieder Fragen habe ::)
 
  • #16
aline234 schrieb:
Schade, ich hatte mich schon halb gefreut. PHP geht leider nich. ich werd mal nachfragen was möglich wäre.
Was für mögliche Scriptsprachen unterstützen das denn noch?

Also erstmal vielen lieben Dank für deine Hilfe, hgast mir sehr weitergeholfen!

Ich melde mich, wenn ich wieder Fragen habe ::)

Theoretisch gesehen jede die es ermöglicht Textdateien zu lesen/zu erzeugen und zu verarbeiten.

Ich habe bisher nur mit PHP damit gearbeitet.

Wenn du fragen hast, immer her damit. Irgendwer wird sie hier sicher beantworten können!
 
  • #17
Also jetz nur mal rein theoretisch... Ich müsste also extra in PHP ein Script schreiben, dass die xsl und die xml nimmt, das dem xml-prozessor gibt, welcher mir dann die datei erstellt.

Hab grad gehört, dass PHP auf unseren Servern nich läuft, dafür aber auf jeden fall Perl. Eine weitere Sprache, mit der ich noch nie gearbeitet hab. Hast nich zufällig Ahnung von Perl? ::)

Na okay, dann beginnen meine nachforschungen also von vorne. Hab ja Zeit.
 
  • #18
Jupp, mir Perl kannst du das auch machen.

Wie, weiß ich aber auch nicht.

Das Problem ist folgendes, du hast ja die Daten (im XML File) und die Darstellung (im XSLT File). Diese müssen zur Erzeugung einer Datei an den XML Prozessor übergeben werden. Das heißt, eine weitere Instanz muss dazu genötigt werden die entsprechenden Parameter (Name der XML Datei, Name der XSLT Datei, Name der zu kreierenden CSV Datei, sonstige Parameter um den XML Prozessor anzusteuern) ja an den XML Prozessor schicken.

Diese Instanz wäre dann z.B. PHP oder Perl. Denn Sie muss ja (auf Mausklick) angestoßen werden.

XML ist also die Ausgangslage, das XSLT Schema ist dazu da die Darstellung zu regeln, ein weiteres Script (PHP oder Perl) ist dazu da den XML Prozessor mit allen notwendigen Infos zu versorgen (das er auch weiß was er tun muss) und der XML Prozessor ist dazu da, aus der XML Datei und der XSLT Datei DAS zu machen, was du haben willst.

Verstanden?

Damit ist aber auch z.b. Programmcode sauber vom Layout getrennt. Den Vorteil wirst du sicher irgendwann in deiner Laufbahn selbst erkennen. (Das erspare ich mir hier einfach mal, ich laber eh schon zu viel)

Es ist Anfangs verdammt schwierig, und für kleine Projekte sicher nur bedingt Sinnvoll, aber wenn man den dreh raus hat eröffnet es ganz neue Möglichkeiten!
 
  • #19
Ja, Vorteile von XML sind mir schon geläufig, mittlerweile kann ich ja auch HTML Dokumente ganz alleine erzeugen, so schwieirg isses ja nun doch nich.

Nur das mit dem XML Prozessor wusste ich einfach nich.

Übrigens hab ich vorhin mal angefragt ob wir überhaupt nen XML Prozessor haben und die Antwort war: Gute Frage, da werd ich mal nachforschen

Hab also sozusagen Zwangspause, weil bevor ichkeine konkrete Antwort habe brauch ich mir ja auch nich den Kopf zu zerbrechen, wenns dann doch nich zu realisieren is.
 
  • #20
Ach übrigens, hier noch ein paar Links zum Thema XML



hier gibt es viele Interessante Linksammlungen zum Thema XML und Co.




XT und Saxon sind zwei sehr bekannte XML Prozessoren!
 
Thema:

aus xml mit xsl eine xls erstellen

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.839
Beiträge
707.962
Mitglieder
51.492
Neuestes Mitglied
Janus36
Oben