XML Datei wird falsch dargestellt

kirschi68

Grünschnabel
Hallo Leute,

stehe vor dem Problem, daß bei einer in Excel 2003 geöffnete XML-Datei nicht das angezeigt wird, was eigentlich drin steht, genau gesagt, setzt Excel den 1000-er Punkt in mehreren Zellen an die falsche Stelle bzw. es wird ein Komma draus. Also aus 1.500 wird fälschlicherweise 1,5. In manchen Zellen wird das aber richtig angezeigt. In der mit dem IE 6 geöffneten XML Datei, wird die 1.500 korrekt dargestellt.
Da ich wenig Ahnung von der Materie habe hier mal ein Auszug, wie der IE6 die Datei darstellt:

<?xml version="1.0" ?>
- <Item_Planning_Export>
- <Artikel Version="11830">
<No_ Caption="Nr." FieldLength="22">1234-1234</No_>
<Description Caption="Beschreibung" FieldLength="55">Bezeichnung</Description>
<Inventory Caption="Lagerbestand" FieldLength="22">243.016,85</Inventory>
- <Bewegung_Detail Version="0">
<Document_Type Caption="Belegart" FieldLength="55">Komponente Geplant</Document_Type>
<Document_No_ Caption="Belegnummer" FieldLength="22">BEL123456</Document_No_>
<Document_Name Caption="BelegName" FieldLength="55" />
<Due_Date Caption="Fällig am" FieldLength="22">19.10.04</Due_Date>
<Quantity Caption="Menge" FieldLength="22">-1.575</Quantity>
</Bewegung_Detail>
- <Bewegung_Detail Version="0">

und so weiter

Bei der Zeile <Quantity Caption... tritt der Fehler in Excel auf und zwar bei Werten die 4stellig (und größer? kann ich im Moment nicht prüfen) sind.
Sind solche Fehler bekannt und vielleicht auch eine Lösungsmöglichkeit? Gibt es eine Möglichkeit, Excel zu beeinflussen, wie das Dokument angezeigt wird?
Habe etwas von XSLT gelesen, müßte mir derjenige, welcher den Export (aus einer Warenwirtschaft) in diese Datei veranlaßt, eine für uns passende XSLT-Datei zur Verfügung stellen, damit wir das richtig lesen können?
Gruß Andreas
 
Eine XSLT ist nur nötig, wenn du die XML Daten transformieren willst, also im Web darstellen oder die Tags umänder für ein bestimmtes Programm.

Ich denke, dass der Fehler eher bei Excel liegt. Wenn du mal die Zelle selektierst und dann mit der rechten Maustaste klickst und auf Zellen formatieren. Schaue dort mal, ob bei Zahl das Häckchen bei mit 1000 Trennzeichen anzeigen steht, wenn ja, dann nehm, das mal raus, und probiere es nochmal.
 
Guten Morgen,

die Zelle ist "Standard" formatiert bzw. hat keine spezielle Formatierung, kein Haken drin beim 1000-er Punkt. Hätte ich denn noch eine andere Möglichkeit, diese XML in tabellarischer Ansicht zu betrachten? Habe es schon mit OpenOffice.org versucht, aber dort wird das Dokument wie im IE dargestellt.
Andreas
 
Du könntest es mal mit Access/Base probieren, ansonsten kannst du die XML-Datei mit XSLT im Browser in einer Tabelle darstellen.
Kannst du das XML mal hier reinstellen, dann kann ich mir das mal in Open Office anschauen und schauen, wo der Fehler sein könnte.
 
Ja hier die Datei:

<?xml version="1.0" ?>
- <Item_Planning_Export>
- <Artikel Version="11830">
<No_ Caption="Nr." FieldLength="22">1234-5678</No_>
<Description Caption="Beschreibung" FieldLength="55">SMD</Description>
<Inventory Caption="Lagerbestand" FieldLength="22">243.016,85</Inventory>
- <Bewegung_Detail Version="0">
<Document_Type Caption="Belegart" FieldLength="55">Komponente</Document_Type>
<Document_No_ Caption="Belegnummer" FieldLength="22">E4418111</Document_No_>
<Document_Name Caption="BelegName" FieldLength="55" />
<Due_Date Caption="Fällig am" FieldLength="22">19.10.04</Due_Date>
<Quantity Caption="Menge" FieldLength="22">-1.575</Quantity>
</Bewegung_Detail>
- <Bewegung_Detail Version="0">
<Document_Type Caption="Belegart" FieldLength="55">Bestellung</Document_Type>
<Document_No_ Caption="Belegnummer" FieldLength="22">1042111</Document_No_>
<Document_Name Caption="BelegName" FieldLength="55">Firma</Document_Name>
<Due_Date Caption="Fällig am" FieldLength="22">07.01.05</Due_Date>
<Quantity Caption="Menge" FieldLength="22">12.000</Quantity>
</Bewegung_Detail>
- <Bewegung_Detail Version="0">
<Document_Type Caption="Belegart" FieldLength="55">Komponente</Document_Type>
<Document_No_ Caption="Belegnummer" FieldLength="22">4418222</Document_No_>
<Document_Name Caption="BelegName" FieldLength="55" />
<Due_Date Caption="Fällig am" FieldLength="22">04.02.05</Due_Date>
<Quantity Caption="Menge" FieldLength="22">-1.575</Quantity>
</Bewegung_Detail>
- <Bewegung_Detail Version="0">
<Document_Type Caption="Belegart" FieldLength="55">Komponente</Document_Type>
<Document_No_ Caption="Belegnummer" FieldLength="22">4416333</Document_No_>
<Document_Name Caption="BelegName" FieldLength="55" />
<Due_Date Caption="Fällig am" FieldLength="22">24.05.05</Due_Date>
<Quantity Caption="Menge" FieldLength="22">-42</Quantity>
</Bewegung_Detail>
- <Bewegung_Detail Version="0">
<Document_Type Caption="Belegart" FieldLength="55">Komponente</Document_Type>
<Document_No_ Caption="Belegnummer" FieldLength="22">4417444</Document_No_>
<Document_Name Caption="BelegName" FieldLength="55" />
<Due_Date Caption="Fällig am" FieldLength="22">08.07.05</Due_Date>
<Quantity Caption="Menge" FieldLength="22">-5.670</Quantity>
</Bewegung_Detail>
- <Bewegung_Detail Version="0">
<Document_Type Caption="Belegart" FieldLength="55">Komponente</Document_Type>
<Document_No_ Caption="Belegnummer" FieldLength="22">4418556</Document_No_>
<Document_Name Caption="BelegName" FieldLength="55" />
<Due_Date Caption="Fällig am" FieldLength="22">12.07.05</Due_Date>
<Quantity Caption="Menge" FieldLength="22">-1.512</Quantity>
</Bewegung_Detail>
</Artikel>
</Item_Planning_Export>

Im letzten Punkt muß die Stückzahl -1512 sein, wenn ich die Datei mit Excel aufmache, ist sie 1,512 beim vorletzten Punkt ebenso ein Ausrutscher, weiter oben bei der Stückzahl -42 wird sie von Excel wieder korrekt dargestellt...

Andreas
 
Das Problem liegt bei den Trennzeichen von Excel, normale Kommazahlen, werden mit einem Komma und nicht mit einem Punkt getrennt.
Wenn du 1512, dann setzt Excel das Tausendertrennzeichen(.), dann hast du das gewünschte Ergebnis.
Ich glaub nicht, dass es da eine Möglichkeit geben wird, das zu umgehen.
Kannst ja mal Googeln zu den Trennzeichen.
Brauchst du das unbedingt in Excel? Weil mit XSLT könnte man die Daten im Browser in einer Tabelle darstellen.
 
Wir hatten uns vorgestellt, die Datei dann weiter zu bearbeiten, was aber nicht unbedingt nötig wäre. Vielleicht könnte man aus einer im Browser dargestellten Tabelle den Inhalt per strg+c/strg+v in eine Excel-Datei übertragen? Jedenfalls wäre eine saubere Tabellendarstellung im Browser ein riesen Fortschritt, denn diesen "Kauderwelsch" in der Originaldatei kann ich meinen Kollegen nicht zumuten. Das Problem dabei ist, daß ich gerade mal weiß, was XML ist :-|. Werde wohl um einen Büchereibesuch und kalte Umschläge nicht drum herum kommen ;-)
 
Zuletzt bearbeitet:
Die nötigen Infos zu XSLT findest du da: http://de.selfhtml.org/xml/darstellung/xslgrundlagen.htm
Das musst du einmal durchlesen, dann weißt du ungefähr darüber bescheid.
Das ist garnicht so schwer, da man viel mit HTML Tags arbeitet.
Habe dashier mal kurz auf die schnelle gemacht: http://www.daniel-web.space4free.net/Karte.xml

So sieht die XSLT aus:
Code:
<?xml version="1.0" encoding="iso-8859-1"?>
 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
 <xsl:template match="/">
  <html><head></head><body>
  <table border="1" cellspacing="3" cellpadding="3" align="center">
  <xsl:apply-templates />
  </table>
  </body></html>
 </xsl:template>
 
 <xsl:template match="Inhaber">
 <tr>
 <td align="center"><xsl:value-of select="Name" /></td>
 <td align="center"><xsl:value-of select="Vorname" /></td>
 </tr>
 </xsl:template>
 
 <xsl:template match="Anschrift">
 <tr>
 <td align="center"><xsl:value-of select="PLZ" /></td>
 <td align="center"><xsl:value-of select="Ort" /></td>
 </tr>
 <tr>
 <td align="center"><xsl:value-of select="Strasse" /></td>
 <td align="center"><xsl:value-of select="Hausnummer" /></td>
 </tr>
 <tr>
 <td align="center" colspan="2"><xsl:value-of select="Telefon" /></td>
 </tr>
 </xsl:template>
 
 </xsl:stylesheet>
und dann habe ich das oben in die XML Datei eingefügt:
Code:
<?xml-stylesheet type="text/xsl" href="Karte.xsl" ?>
Wenn man die XML Datei im Browser öffnet, wird sie automatisch so dargestellt.
Da bei dir sich immer bestimmte Teile wiederholen, muss man das nur einmal machen und des dann in ne for-each schleife packen.
Kannst dir das ja mal anschauen, wenn du Fragen hast, dann kannst dich ja hier im Forum melden.
 
Zurück