Excel-XML Export // XML-Schema
#1
Guten Morgen liebe Excel-User, 

ich benötige eure Hilfe bei einem XML-Export aus Excel.
Im Grunde steht meine Tabelle und der Export bzw. das hinterlegte XML-Schema funktioniert.

Mein Ziel wäre es jetzt, dass die numerischen Werte zwingend mit zwei Kommastellen zu exportieren.

Zu diesem Problem habe ich bereits die KI befragt, welche mir ein XSD-Schema vorschlägt.
Dieses habe ich auch gleich erstellen lassen und statt meinem XML-Schema in Excel hochgeladen.
Leider werden Zahlen trotzdem ohne Kommastellen exportiert.

Es wäre super, wenn mir bei diesem Problem jemand helfen könnte:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="Export_Test"
    xmlns="Export_mit_Komma"
    elementFormDefault="qualified">

    <!-- ========================= -->
    <!-- Decimal mit 2 Nachkommastellen -->
    <!-- ========================= -->
    <xs:simpleType name="Decimal2">
        <xs:restriction base="xs:decimal">
            <xs:fractionDigits value="2"/>
        </xs:restriction>
    </xs:simpleType>

    <!-- ========================= -->
    <!-- Root -->
    <!-- ========================= -->
    <xs:element name="Excelsheet">
        <xs:complexType>
            <xs:sequence>

                <xs:element name="Datum" type="xs:string"/>

                <xs:element name="Aufgabe">
                    <xs:complexType>
                        <xs:sequence>

                            <!-- Adresse-->
                            <xs:element name="Adresse">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="Name" type="xs:string"/>
                                        <xs:element name="Vorname" type="xs:string"/>
                                        <xs:element name="Str" type="xs:string"/>
                                        <xs:element name="Hausnummer" type="xs:string"/>
                                        <xs:element name="Ort" type="xs:string"/>
                                        <xs:element name="PLZ" type="xs:string"/>
                                        <xs:element name="Telefon" type="xs:string"/>
                                        <xs:element name="Email" type="xs:string"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>

                            <!-- Werte-->
                            <xs:element name="Werte">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="Wert 1" type="Decimal2" minOccurs="0"/>
                                        <xs:element name="Wert2" type="Decimal2" minOccurs="0"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>

                        </xs:sequence>
                    </xs:complexType>
                </xs:element>

            </xs:sequence>
        </xs:complexType>
    </xs:element>

</xs:schema>

Für eure Unterstützung darf ich mich schon jetzt bedanken und wünsche einen guten Wochenstart!
Alexander
Antworten Top
#2
Hallo Alexander,

das hast Du Dir so einfach gedacht und das XSD kann ich nicht in Excel einlesen... wie auch immer das bei Dir gehen soll... daher mal vorab:

Code:
<xs:element name="Wert 1" type="Decimal2" minOccurs="0"/>
"Wert 1" ist kein gültiger Name... entweder "Wert_1" oder "Wert1".

Code:
<xs:element name="Datum" type="xs:string"/>
Ein Datum solltest Du als Datentyp date exportieren, dann bekommst Du auch ein gültiges Datum, z.B. für heute 2016-01-19 im XML anstatt der Excel-Ganzzahl 46041.

Das Schema dient nur dazu die Daten beim Im-/Export zu validieren, wenn dieses in den Eigenschaften aktiviert wurde:
   

Wenn die Daten wie in Deinem Fall einen Fehler aufweisen, dann bekommst Du eine entsprechende Fehlermeldung beim Im-/Export, mehr nicht.

Für die Datenkorrektur bis Du selber zuständig, das macht Dir Excel, bzw. XML nicht. Wie sollte das auch funktionieren wenn in dem entsprechenden Feld eine Formel steht? Excel kann Dir nicht automatisch RUNDEN darum machen oder selbsttätig aus einem Text "Anderthalb" eine gültige Zahl generieren.

Andreas.
Antworten Top
#3
Moin,

Es macht doch keinen Unterschied, ob die Zahl 2 oder 2,00 gespeichert werden die sind im Datentyp Decimal identisch. Kann es sein, dass du eigentlich nur sicherstellen, dass Währungsangaben auf zwei Nachkommastellen gerundet werden? Dann könntest du es mir Currency als Datentyp versuchen, oder einfach den zu speichernden Wert vorher runden.

Viele Grüße
derHoepp
Antworten Top
#4
Hallo Alexander,

was möchtest du eigentlich erreichen? 
Deine Angaben sind nicht ganz eindeutig. Möchtest du sicherstellen, dass Excel den Export unterbindet, wenn Zahlen nicht auf 2 Stellen gerundet sind oder sollen in der Zieldatei alle Werte auf 2 Stellen gerundet sein?
Wie bereits angedeutet, ist eine Schema-Datei nur für die Validierung zuständig. Für eine Umformung/-strukturierung wird ein XSL-Stylesheet verwendet, was aber von Excel beim Export nicht unterstützt wird.

Knobbi38
Antworten Top
#5
Bitte entschuldigt die lange Wartezeit.

Ich möchte erreichen, dass die Zahlen in der .XML-Datei mit immer zwei Nachkommastellen erscheinen.
Die so generierte .XML-Datei soll in ein anderes Programm importiert werden, welches über eine Prüfroutine verfügt und eben auf die beiden Nachkommastellen prüft.

Ich würde nun gerne, in einer Hilfszelle, meine Zahlen als Text übergeben und diesen Text anschließend als .XML exportieren.

Code:
=TEXT(RUNDEN(WERT(WECHSELN(TEXT(I40;"0.00");",";"."));2);"0.00")

Allerdings führt dieser Code dazu, dass ich bei einem Zahlenwert von 215,80 einen Textwert von 219 erhalte.


Was mache ich hier falsch?
Antworten Top
#6
Ich hätte jetzt so etwas verwendet:
Code:
=TEXT(RUNDEN(WECHSELN(i40;".";",");2);"0,00")
Antworten Top
#7
Das funktioniert tatsächlich aber nur so lange ich es mit Komma als Dezimaltrenner exportiere:

Code:
=TEXT(RUNDEN(WECHSELN(i40;".";",");2);"0,00") --> funktioniert

Code:
=TEXT(RUNDEN(WECHSELN(i40;".";",");2);"0.00") --> funktioniert nicht

Gibt's hierfür vielleicht noch eine Lösung. 
Ich brauche das Ergebnis mit dem Punkt als Dezimaltrenner  Confused
Antworten Top
#8
Hi,

ich habe von XML keine Ahnung und weiß auch nicht, wie du das exportierst. Wenn dein Exportweg keine Möglichkeit bietet den Dezimaltrenner einzustellen, sondern du wirklich Text ausgeben musst, dann musst du nach dem Erzeugen der zwei Nachkommastellen eben noch Komma in Punkt tauschen. Übrigens ist dein RUNDEN() mMn. auch überflüssig, da das die Textfunktion übernimmt.

Code:
=WECHSELN(TEXT(WECHSELN(i40;".";",");"0,00");",";".")
Gruß,
Helmut

Win11 - Office365 / MacOS - Office365
Antworten Top
#9
(28.01.2026, 16:41)schmidt_as schrieb: Ich brauche das Ergebnis mit dem Punkt als Dezimaltrenner  Confused
Lass den Unfug mit TEXT einfach weg, ein ganz normales RUNDEN reicht. Im XML-Code steht nicht das was Du auf dem Bildschirm siehst.

.zip   Test.zip (Größe: 8,41 KB / Downloads: 2)

Andreas.
Antworten Top
#10
(28.01.2026, 18:28)Andreas Killer schrieb: Lass den Unfug mit TEXT einfach weg, ein ganz normales RUNDEN reicht. Im XML-Code steht nicht das was Du auf dem Bildschirm siehst.


Andreas.

Hi Andreas, 

ich bin erstmal begeistert, wie viel User mir bei meinem Problem helfen.
Deine Lösung wäre wirklich einfach, aber ich brauche im Export immer zwingend zwei Dezimalstellen.
Deine Lösung würde bei 12,50 Euro nur 12.5 ausgeben.

Trotzdem lieben Dank!!
Alex

(28.01.2026, 17:35)HKindler schrieb: Hi,

ich habe von XML keine Ahnung und weiß auch nicht, wie du das exportierst. Wenn dein Exportweg keine Möglichkeit bietet den Dezimaltrenner einzustellen,  sondern du wirklich Text ausgeben musst, dann musst du nach dem Erzeugen der zwei Nachkommastellen eben noch Komma in Punkt tauschen. Übrigens ist dein RUNDEN() mMn. auch überflüssig, da das die Textfunktion übernimmt.

Code:
=WECHSELN(TEXT(WECHSELN(i40;".";",");"0,00");",";".")

Guten Abend Helmut, 

deine Lösung funktioniert. Ich bekomme damit meinen Export konform den Importvorgaben hin.

Vielen lieben Dank!!!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste