[ igor-ch @ 22.11.2009. 15:48 ] @
Posto nisam neki strucnjak za programiranje, moram da vam se obratim za pomoc:
najme, jednom mesecno moram u firmi da iz jednog XML File-a izvucem odredjene podatke i da ih exportiram u Excel tabelu.
To i ne bi bio problem da taj XML dokument nema oko 300 linija i izgleda otprilike ovako (jedan deo):

<Patch name="Works432.CAB" guid="004FAB82-E7FD-4F37-8346-903FF2961E7E" guid_bulletin="894B5ADC-872D-42D5-B195-43A4240F629D" bulletin="MS09-024" state="20" />
<Patch name="ogl.cab" guid="00EDAE9D-6DDC-4F22-B56B-86B697FA2BA9" guid_bulletin="44EF731A-FA66-4AA8-B8D2-D7B9B89269D4" bulletin="MS09-062" state="20" />
<Patch name="EXCEL.CAB" guid="012B6FF5-1DCE-4E1A-B5F2-1C2C2FF8314C" guid_bulletin="359A568E-29F4-4060-BC83-E32556B5FB9D" bulletin="MS06-059" state="20" />

.
.
.

Trebao bih da dobijem sledecu tabelu:

Works432.CAB____MS09-024
ogl.cab__________MS09-062
EXCEL.CAB_______MS06-059

Posto sam ranije malo programirao u VB6 mislim da bi najbolji nacin bio da koristim OLE: Microsoft XML, v6.0, ali dalje nazalost ne ide :-(
Da li neko ima neki primer kako bi to moglo da se odradi ili mozda neku ideju?

Hvala unapred!

[Ovu poruku je menjao igor-ch dana 22.11.2009. u 21:05 GMT+1]
[ Aleksandar Vasic @ 22.11.2009. 18:39 ] @
Evo ti najprostoji nacin :)

Code:
Private Function Obradi(Ulaz As String)
Text1.Text = Replace(Text1.Text, "<Patch name", "")
Text1.Text = Replace(Text1.Text, "guid", "")
Text1.Text = Replace(Text1.Text, "guid_bulletin", "")
Text1.Text = Replace(Text1.Text, "bulletin", "")
Text1.Text = Replace(Text1.Text, "state", "")
Text1.Text = Replace(Text1.Text, "_", "")
Text1.Text = Replace(Text1.Text, "/>", "")
Text1.Text = Replace(Text1.Text, Chr(34), "")
Niz = Split(Text1.Text, "=")
Obradi = Niz(1) & " " & Niz(4)
End Function

Private Sub Command1_Click()
MsgBox Obradi(Text1.Text)
End Sub


Citas taj fajl red po red i parsiras pomocu ovoga :)
[ igor-ch @ 22.11.2009. 21:20 ] @
Hvala!
Pronasao sam na netu ovaj primer koji ucitava i snima fajl:

E sad, dodao bih mu jos jedan taster kojim bi se moj XML fajl kompletan (svih oko 300 linija) obradio. Da li bi neko mogao da mi jos malo pomogne?





[Ovu poruku je menjao igor-ch dana 23.11.2009. u 10:30 GMT+1]
[ Aleksandar Vasic @ 23.11.2009. 12:21 ] @
Evo probaj ovo
[ igor-ch @ 23.11.2009. 18:11 ] @
Citat:
Aleksandar Vasic: Evo probaj ovo

Jos samo dve male sitnice:
1. XML fajl ima na pocetku i kraju zaglavlje, tako da mi prijavljuje gresku:
<BMSSpecialImport>
<PTMPatchStates version="1.0" count="5895">
.
.
.
</PTMPatchStates>
</BMSSpecialImport>

2.Kako da snimim rezultat koji se pojavljuje u List1? Kada ucitam i parsiram fajl i kada ga posle snimim, ne dobijam rezultat vec opet taj ucitani fajl.

[ Aleksandar Vasic @ 23.11.2009. 18:40 ] @
Sto se tice prve stavke, dodajes ovo u funkciju Obradi:

Code:
Ulaz = Replace(Ulaz, "<BMSSpecialImport>", "")
Ulaz = Replace(Ulaz, "<PTMPatchStates version=" & Chr(34) & "1.0" & Chr(34) & "count=" & Chr(34) & "5895" & Chr(34) & ">", "")
Ulaz = Replace(Ulaz, "</PTMPatchStates>", "")
Ulaz = Replace(Ulaz, "</BMSSpecialImport>", "")


Fajl iz liste mozes zapamtiti na sledeci nacin:

Code:
For i = 0 to List1.ListCount
Izlaz = List1.List(i) & vbCrLf
Next i
cdlg.ShowSave
SaveText Izlaz, cdlg.FileName & ".txt"


To sto se ucitava isti fajl je zato sto sam ja ubacio u Text1 za svojstvo text, taj tekst. Ukoliko hoces da ti se ucitava fajl koji si poslednji snimio, morao bi u nekom externom fajlu da snimis adresu istog, a zatim sa Form_Load da ucitas
[ igor-ch @ 23.11.2009. 20:24 ] @
Sve zivo sam probao, ali ne ide :-(
Dizem ruke... u svakom slucaju, hvala ti puno!!!

Pozdrav!

PS. Ako te put nekad dovede u CH, javi se zasluzio si rucak!
[ Aleksandar Vasic @ 24.11.2009. 01:23 ] @
Nemoj tako lako odustajati, ajd okaci ceo projekat do sada i reci sta ti se javlja sada kao greska :)
[ igor-ch @ 24.11.2009. 07:47 ] @
Ja skoro nikada ne odustajem, ali mi se ne isplati da (ponovo) proucavam VB6 zbog samo jednog programcica...

Ok, evo zakacio sam projekat i evo sta me sve muci:
1. Textbox (Text1) i Listbox (List1) ne trebaju da se prikazu. Znaci, jedino sto treba da se vidi na app su Load, Save i Parsiraj.
2. Fajl koji se ucitava mora biti XML (u principu je uvek slican prikacenom Patch_DE_EN_2009_10.xml)
3. Fajl koji se snima bi trebao da bude EXCEL i da izgleda otpriliko ovako:



Nesto u vezi exporta teksta u excel sam pronasao ovde, ali mi nikako ne ide: http://forums.devx.com/showpost.php?p=423413&postcount=5

Hvala ti unapred!
[ Aleksandar Vasic @ 25.11.2009. 10:24 ] @
Ok, cim uhvatim malo vremena, sastavicu ti ovo
[ Aleksandar Vasic @ 25.11.2009. 18:00 ] @
Evo, gotovo, testirano, radi 100%
[ igor-ch @ 26.11.2009. 11:09 ] @
Hvala puno, to je ono sto mi treba!!! Ima samo jedan problemcic:

Sve je uredu dok ne krene sa exportom u EXCEL. Onda mi javlja "Run-time error 9, Subscript out of range",
a greska je u liniji "moWB.Sheets("Sheet1").Cells(i + 1, 1).Value = Izlaz(0)"

Da li je to mozda zbog razlicite EXCEL verzije?
[ Aleksandar Vasic @ 26.11.2009. 13:59 ] @
Pretpostavka je da si stisnuo Export, pre nego sto si stisnuo Parse
[ igor-ch @ 26.11.2009. 17:22 ] @
Ma ne , pro sam ucitao Fajl, zatim sa pritisnu Parse, a onda sam kliknuo na Export. Tada se javlja greska...
Nema veze sa EXCEL verzijom, isto se desava i sa OFFICE 2003 i 2007...
[ Aleksandar Vasic @ 26.11.2009. 17:42 ] @
Jel bi mogao uploadujes taj fajl? :)
[ igor-ch @ 26.11.2009. 19:02 ] @
To je isti taj xml fajl koji si i ti koristio ( Patch_DE_EN_2009_10.xml ).
[ Aleksandar Vasic @ 26.11.2009. 23:43 ] @
Meni ne izbacuje nikakvu gresku...ne znam zasto tebi izbacuje...