Toon posts:

Conversie naar excel

Pagina: 1
Acties:

Acties:
  • 0Henk 'm!

  • DriesA
  • Registratie: December 2003
  • Laatst online: 30-04 20:29
Allen,

Ik heb momenteel een vrij lang TXT bestand met de volgende structuur (dit is één record):

code:
1
2
3
4
5
6
7
8
9
10
11
[#1]
#Handle=1206292183
AutoReject=0
Blink=0
CustomIcon=116
FonAnnouncement=
FonNoRecordingAllowed=0
NoPopup=0
RunProg=
Sound=
Vip=1


Elk record staat dus onder elkaar. Elke parametertype wordt steeds opnieuw bij naam genoemd met daar achter de waarde. Dit zou naar excel (of csv) moeten geconverteerd worden, dus zoiets als (verder gaand op bovenstaand voorbeeld:):
1206292183; 0; 0; 116; ; 0; 0; ; ; ; 1
Eventueel mag de parametertype (die altijd in dezelfde volgorde staat) er nog gewoon bij, die kan ik er met de juiste xls-formules wel vanaf halen.

De uitdaging is zo'n beetje om de huidige waardes die onder elkaar staan, naast elkaar te krijgen. En de conversie moet natuurlijk kunnen detecteren wanneer één record eindigt en het volgende start.

Iemand een idee hoe ik hier aan begin?

I don't have hard drives. i just keep 30 chinese teenagers in my basement and force them to memorize numbers.


Acties:
  • 0Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Gewoon een scriptje maken die regel voor regel leest en er een csv van maakt.

Of als je geen enkele scripttaal kent of wil leren kennen: zoek "#Handle=" en vervang door "", zoek {EOLn}&"AutoReject=" en vervang door ";", etc. Daarna alleen nog alle regels met [] verwijderen of overslaan. Dat laatste kan bijv. met een Regular Expression (en met EOLn bedoel ik end of line, 'enter').

csv is dan veel makkelijker dan .xls.

Als de parameter er in mag blijven is het nog makkelijker: zoek EOLn, vervang door ";". En daarna zoek weer met een regular expression ;• ; (let op de extra ;; wegens bovenstaande) en vervang door EOLn. Deze methode is trouwens wat lastig vanuit een text editor omdat je opeens 1 enorm lange regel hebt en niet iedere editor kan daar mee overweg.

Er zijn misschien ook wel kant-en-klare tools (.ini naar csv, .ini naar xml, whatever) maar die ken ik niet.
Edit: inderdaad. [google=ini to csv] / [google=ini to xml]. En met xml kan je weer doen wat je wilt, zoals inlezen in Excel..

[Voor 12% gewijzigd door F_J_K op 22-05-2011 23:17]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0Henk 'm!

  • Anoniem: 303530
  • Registratie: Mei 2009
  • Niet online
Bouw een powershell scriptje?

code:
1
[array]$records = (get-content "file.txt").split("[#")
om de txt file te splitten in afzonderlijke records, en dan:

code:
1
2
3
4
5
6
foreach($record in $records)
{
$record | Select-String (#handle=(?<num>.+) | %{([string]($_.matches[0].groups['num'].captures))}
...
...
}
om de afzonderlijke entries te extracten.

Met een simpel script kan je dit bovendien meteen in excel dumpen zoals hier beschreven: http://blogs.technet.com/...mate-microsoft-excel.aspx
code:
1
2
3
4
5
6
7
8
9
10
11
$a = New-Object -comobject Excel.Application

$a.Visible = $True

$b = $a.Workbooks.Add()
$c = $b.Worksheets.Item(1)

$c.Cells.Item(1,1) = "A value in cell A1."
$b.SaveAs("C:\Scripts\Test.xls")

$a.Quit()


Edit: ahh iemand was me voor..

Acties:
  • 0Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Een kant-en-klaar script werkt natuurlijk ook :P

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0Henk 'm!

  • Anoniem: 303530
  • Registratie: Mei 2009
  • Niet online
Dat is de moeite niet, ik ben net 3 dagen bezig geweest om een powershell script te maken dat een aantal websites van crawlen en kan exporteren naar excel :P

Nu kan ik tenminste fatsoenlijk overweg met regex.

[Voor 15% gewijzigd door Anoniem: 303530 op 22-05-2011 23:20]



Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee