dila21
Goto Top

Excel Tabelle in XML importieren

Hallo zusammen,

ich habe Daten in einer Excel-Tabelle, das mit Attributen und Namen etc. befüllt ist.
Ich würde nun gerne wissen, ob es möglich ist, diese Daten in eine XML Datei mit einer vordefinierten
Struktur zu importieren.
Vielen Dank im voraus.

Viele Grüße

Dila

Content-Key: 256471

Url: https://administrator.de/contentid/256471

Ausgedruckt am: 28.03.2024 um 17:03 Uhr

Mitglied: colinardo
colinardo 02.12.2014 um 10:16:05 Uhr
Goto Top
Hallo Dila,
Zitat von @dila21:
ich habe Daten in einer Excel-Tabelle, das mit Attributen und Namen etc. befüllt ist.
Ich würde nun gerne wissen, ob es möglich ist, diese Daten in eine XML Datei mit einer vordefinierten
Struktur zu importieren.
Sicher, alles ist möglich, wenn man wüsste wie deine Strukturen und dein Excel-File aussehen face-wink

Grüße Uwe
Mitglied: colinardo
colinardo 02.12.2014 aktualisiert um 10:23:40 Uhr
Goto Top
Mitglied: dila21
dila21 02.12.2014 aktualisiert um 11:42:30 Uhr
Goto Top
Hallo Uwe,

also die Struktur der Excel-Tabelle sieht folgendermaßen aus:

sooo die Struktur in Excel sieht natürlich so aus: Spalte A Spalte B Spalte C Spalte D, die Inhalte dieser Spalten habe ich gleich drunter aufgeschrieben:

Spalte A
Sparte
Testklasse

Spalte B
Sparte ID
12

Spalte C
Attribut Name

Attribut1
Attribut2
Attribut3


Spalte D
Attribut ID
00001
00002
00003

Die Attribute 1-3 sind der Testklasse zugeordnet.

Die Struktur des XML-Files muss folgende sein:


 

<ICSDictionaryAttribute attributeId="00001">  
		<Name>Attribut 1</Name>
		<Format>
			<ICSFormatString scale="8"/>  
		</Format>
		<Description></Description>
		<Comment></Comment>
	</ICSDictionaryAttribute>

<ICSDictionaryAttribute attributeId="00002">  
		<Name>Attribut 2</Name>
		<Format>
			<ICSFormatString scale="8"/>  
		</Format>
		<Description></Description>
		<Comment></Comment>
	</ICSDictionaryAttribute>			

 <ICSDictionaryAttribute attributeId="00003">		  
          <Name>Attribut 3</Name>		
             <Format>			
             <ICSFormatString scale="8"/>		  
          </Format>		
          <Description></Description>		
         <Comment></Comment>	
         </ICSDictionaryAttribute>				



<ClassPackage classId="12">  
		<ICSClass abstract="true" unitSystem="both">  

			<Name>Einzelteile</Name>
			<Attribute dbIndex="1" attributeId="00001"/>  
			<Attribute dbIndex="2" attributeId="00002"/>						  
                       <Attribute dbIndex="3" attributeId="00003"/>						  
		</ICSClass>
	</ClassPackage>


Ich hoffe ist verständlich dargestellt.

Gruß Dila
Mitglied: colinardo
colinardo 02.12.2014 aktualisiert um 11:29:55 Uhr
Goto Top
Zitat von @dila21:

Hallo Uwe,

also die Struktur der Excel-Tabelle sieht folgendermaßen aus:

A B C
D

Sparte Sparte ID Attribut Name Attribut ID

Testklasse 12
Attribut 1
00001
Attribut 2
00002
Attribut 3
00003


Ich hoffe ist verständlich dargestellt.
hmm die Formatierung des Excel-Files ist mir noch nicht klar, bitte nutze die Bitte nutze Code-Tags für deinen Quellcode: <code> Quellcode </code>. Merci.
Mitglied: dila21
dila21 02.12.2014 um 11:43:31 Uhr
Goto Top
hallo Uwe,

habs jetzt mal aktualisiert, hoffe ist jetzt etwas klarer, konnte leider kein Screenshot einfügen face-sad. Habs nicht hinbekommen face-sad.
Mitglied: colinardo
colinardo 02.12.2014 aktualisiert um 11:53:27 Uhr
Goto Top
OK und wie sieht das bereits vorhandene XML-Dokument aus, bzw. in welchen Tag im vorhandenen XML-File muss dein Teil geschrieben werden ?
Mitglied: dila21
dila21 02.12.2014 um 11:58:12 Uhr
Goto Top
ja da liegt das Problem, ich weiß das das so aussehen muss, was ich als Code hinzugefügt hatte. Mein Problem ist der Weg dahin. Mach ich das mit einer Batch Datei? Soo das die Inhalte meiner Excel-Tabelle in dieser XML-Struktur wie als Code angegeben, aussehen. Sorry ich glaube ich habe das nicht genau erklärt face-sad.
Mitglied: colinardo
colinardo 02.12.2014 aktualisiert um 12:07:50 Uhr
Goto Top
Zitat von @dila21:

ja da liegt das Problem, ich weiß das das so aussehen muss, was ich als Code hinzugefügt hatte. Mein Problem ist der
Weg dahin. Mach ich das mit einer Batch Datei? Soo das die Inhalte meiner Excel-Tabelle in dieser XML-Struktur wie als Code
angegeben, aussehen. Sorry ich glaube ich habe das nicht genau erklärt face-sad.
Das erstellen ist kein Problem nur beantwortest du meine Frage damit nicht damit ich dir "exakt" helfen kann. Das lässt sich wie oben in den Links beschrieben mit dem XMLDocument-Objekt machen oder eben Plaintext in eine Datei schreiben.
Nur sagst du das es in ein vorhandenes XML-Dokument eingetragen werden muss, und dafür muss ich wissen in welchen Knoten du deinen obigen XML-Code eingefügt haben willst !!!

Oder ist das oben bereits alles was in die XML-Datei muss ??

Sorry aber Details sind hier sehr wichtig, sonst stimmt's hinterher nicht !

Mach ich das mit einer Batch Datei?
nein hier am besten mit VBS/VBA
Mitglied: dila21
dila21 02.12.2014 um 12:24:26 Uhr
Goto Top
Hallo Uwe,

ja, das ist bereits alles was in die XML-Datei rein muss.
Ich habe diese vorhandene XML-Datei manuell erstellt.

Und wenn ich weiß wie sowas über ein Script funktioniert, möchte ich die weiteren Tabellen über diesen Code in eine XML-Datei umwandeln.
Die XML-Datei muss halt so aufgebaut sein zum Schluss wie mein manuell erstellter Code. Damit ich zum Schluss diese
XML-File verwenden kann.

O mann, sorry echt, ich hab das echt total falsch erklärt face-sad.

Gruß Evrim
Mitglied: colinardo
colinardo 02.12.2014 aktualisiert um 13:40:31 Uhr
Goto Top
mache dir später den Code fertig, bin gerade leider anderweitig beschäftigt face-wink
Mitglied: dila21
dila21 02.12.2014 um 13:44:46 Uhr
Goto Top
wooooooooow vielen Dank....face-smile)
Mitglied: colinardo
Lösung colinardo 02.12.2014, aktualisiert am 08.10.2020 um 22:23:28 Uhr
Goto Top
Bitteschön, hier kannst du dir deine Lösung herunter laden
create_xml_doc_256471.xlsm

Viel Spaß
Grüße Uwe
Mitglied: dila21
dila21 02.12.2014 um 15:10:46 Uhr
Goto Top
Dankeeeeeeeeeeeeeeeeeeeee face-smile
Mitglied: dila21
dila21 04.12.2014 um 15:07:21 Uhr
Goto Top
Hallo Uwe,

hat wunderbar funktioniert. Ich habe versucht den Code etwas zu erweitern, aber habs leider nicht hinbekommen.
Was muss ich denn beachten, wenn ich möchte, das auch der Name aus der Tabelle ausgelesen wird.

Im Moment ist das ja so, dass der Name im Makro reingeschrieben werden muss.

Set nodeName = xmlDoc.createElement("Name")
nodeName.Text = ""
nodeICSClass.appendChild (nodeName)

Und ich habe versucht noch eine Spalte hinzuzufügen face-sad, leider erfolglos. Ich wollte noch Parent hinzufügen (siehe Code). Ich werde in die Excel-Tabelle noch eine Spalte Paren hinzufügen, was dann auch übernommen werden soll. Ich habe das versucht, etwas von den anderen Schritten abzuleiten, leider nicht geklappt. face-sad


<ClassPackage classId="1234">  
		<ICSClass unitSystem="both">  
			<Parent>789</Parent>
			<Name>Testklasse</Name>
			<Attribute dbIndex="90" arraySize="1" attributeId="12345">  
			<Attribute dbIndex="91" arraySize="1" attributeId="45693">  
			
		</ICSClass>
	</ClassPackage>


Viele Grüße

Dila
Mitglied: colinardo
Lösung colinardo 04.12.2014, aktualisiert am 05.12.2014 um 12:44:26 Uhr
Goto Top
Zitat von @dila21:
Im Moment ist das ja so, dass der Name im Makro reingeschrieben werden muss.
Nein, muss er nicht, wie oben im Code zu sehen holt sich das Script den Wert mit dieser Zeile aus der Tabelle
nodeName.Text = cell.Offset(0, 2).Value 
cell ist dabei gerade die aktuelle Zeile. Mit Offset(0,2) wird der Zeiger dann zwei Spalten nach rechts verschoben und der Wert dieser Zelle zurückgegeben. Das musst du an deine hinzugefügte Spalte anpassen. Wenn du natürlich die Spalte zwischen die jetzigen und nicht hinten dran einfügst, musst du natürlich die anderen Offsets auf die Spalten ebenfalls ändern damit die wieder stimmen.

Für eine zusâtzliche Spalte mit Parent die du in der Tabelle hinten angefügt hast fügst du mit folgendem zusätzlichen Code ein:
Set nodeParent = xmlDoc.createElement("Parent")  
nodeParent.Text = cell.Offset(0,4).Value
nodeICSClass.appendChild (nodeParent)
In diesem Fall wäre der Wert für Parent also in Spalte E der jeweils aktuellen Zeile zu finden.

Du musst dir das XML Gerüst wie einen Baum vorstellen. Im Code erstellst du dazu zuerst die Elemente und Attribute, welche du dann an die jeweiligen Vorgänger-Elemente(Mutterelemente) anhängst (appendChild).

Grüße Uwe
Mitglied: dila21
dila21 05.12.2014 um 12:44:24 Uhr
Goto Top
Danke Uwe, alles hat funktioniert face-smile
Mitglied: dila21
dila21 17.12.2014 aktualisiert um 10:22:30 Uhr
Goto Top
Hallo Uwe,

ich hätte da noch eine kleine Frage face-sad. Ich habe da noch ein Problem, ansonsten müsste ich das ganze per Hand einfügen face-sad. Und das dauert ja übel lang.

Mein Problem:

Ich habe eine neue Excel-Tabelle, die so ausschaut:

A= Sparte | B=Nummer | C=ABC | D=DEF | E=GHI |
Testklasse | 123456 | Wert1 | Wert2 | Wert3 |


Grüße Dila
Mitglied: colinardo
colinardo 17.12.2014 aktualisiert um 09:56:18 Uhr
Goto Top
Zitat von @dila21:
ich hätte da noch eine kleine Frage face-sad. Ich habe da noch ein Problem, ansonsten müsste ich das ganze per Hand einfügen face-sad. Und das dauert ja übel lang.
ja und meine Zeit ist umesöns oder was ?

Hast du vielleicht eine Idee, wie das funktionieren könnte?
Sicher ist doch immer wieder das gleiche, finde das aber ein bisschen dreist mich hier deine Arbeit machen zu lassen, sorry, habe ihn dir nun schon zwei mal ergänzt.
Obiger Code sollte dir eigentlich als Lernvorlage dienen, du gibst hier einfach zu schnell auf...

Gegen einen Obolus mach ich dir das gerne, sozusagen als Entschädigung für die Zeit die du Däumchen drehst und Kaffee schlürfst, bei Interesse PM an mich ...

Grüße Uwe
Mitglied: dila21
dila21 17.12.2014 um 10:28:29 Uhr
Goto Top
Hallo Uwe,

sorry, das du es so aufgefasst hast. So war das selbstverständlich nicht gemeint oder gedacht von mir. Aber klar, verstehe dich auch.
Ich habe das schon selber versucht, und bekomme diese Fehlermeldung halt nicht weg. Aus diesem Grund habe ich dich gefragt.
Es ist keineswegs so, das du meine Arbeit machst, glaub mir.
PS: Ich schreibe hier auch erst rein, nachdem ich es selber länger versucht habe. Aber trotzdem vielen Dank für deine Hilfe.
Ich versuchs mal weiter.

Gruß Dila