Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Omzetten speciale txt output file naar excel

Pagina: 1
Acties:

  • The-Force
  • Registratie: April 2000
  • Laatst online: 26-11 13:55
Om de printers hier in kaart te brengen heb ik tooltje gevonden de middels een active directory query een mooie csv file maakt. Er zijn verschillende geprobeerd maar deze doet het het beste en vooral bedoel ik daarmee de nette output.
Echter, alle info staat onder elkaar, niet naast elkaar.
Weet iemand hoe ik die makkelijk kan converten naar Excel?

Voorbeeld:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
dn:CN=Nrd-Printer001,OU=Printers,OU=Regio Noord,OU=Sales,DC=addji,DC=domein,DC=nl
>printerName: Printer001
>driverName: HP LaserJet 5
>portName: IP_192.168.5.18
>location: kamer 1.03
>description: Printer Sales

dn:CN=Nrd-Printer018,OU=Printers,OU=Regio Noord,OU=Inkoop,DC=addji,DC=domein,DC=nl
>printerName: Printer018
>driverName: Lexmark T520 SBE
>portName: IP_192.168.5.5
>location: niet ingevuld
>description: Printer Inkoop


Je hebt dus altijd 6 regels info en dan 1 lege regel, de bedoelding is dat alles op 1 regel komt (in 6 kolommen) in Excel zodat je kunt filteren. Handmatig is geen optie, er staat info in van rond de 5900 printers.

Iemand enig idee hoe ik dit kan doen?

[ Voor 0% gewijzigd door The-Force op 09-10-2009 08:32 . Reden: tikfout ]


  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Een enkele nieuwe regel vervangen door een uniek teken zoals een puntkomma, en twee nieuweregeltekens vervangen door één? :)

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • frickY
  • Registratie: Juli 2001
  • Laatst online: 27-11 09:24
Doe wat find&replaces
code:
1
\n>printerName:

naar
code:
1
\t


code:
1
\n>driverName:

naar
code:
1
\t


Etc.

Uiteindelijk heb een tab-gescheiden lijst Die Excel's "Text naar kolommen" om kan zetten naar een sheet.

[ Voor 82% gewijzigd door frickY op 09-10-2009 08:55 ]


  • The-Force
  • Registratie: April 2000
  • Laatst online: 26-11 13:55
@CodeCaster

Sorry, ik heb je reactie paar keer gelezen maar waarschijnlijk heb ik nog niet genoeg koffie op, ik snap niet wat je bedoelt... 8)7

Ik had natuurlijk al lopen klooien met vervangen van tekens. bijv. "dn:CN= " door ";dn:CN= "
Maar ik krijg het niet voor elkaar dat alle locaties ed. onder elkaar komen bij import in Excel

[ Voor 2% gewijzigd door The-Force op 09-10-2009 08:52 . Reden: typo ]


  • glmona
  • Registratie: Maart 2005
  • Laatst online: 04-11 21:05
frickY schreef op vrijdag 09 oktober 2009 @ 08:46:
Find&Replace dubbele newline naar puntkomma newline
Find&replace enkele newline naar tab

Vervolgens heb je in Excel de opties; Tekst Naar Kolommen
Ik denk dat zo alles op 1 regel komt...

Dus hierna, alle punt komma vernagen door ;+newline

offtopic:
ik denk dat dit niet in de Devschuur hoort

[ Voor 59% gewijzigd door glmona op 09-10-2009 08:56 ]


  • frickY
  • Registratie: Juli 2001
  • Laatst online: 27-11 09:24
@The-Force
Je zult een editor nodig hebben die met reguliere expressies over weg kan om de newlines te kunnen vervangen. Al kan met een beetje zoeken Office's Word dit ook.

Zodra je elk 'record' op 1 regel hebt gooi je dit in Excel en gebruik je Gegevens > Tekst naar kolommen.
Van daaruit kun je de regels opsplitsen naar kolommen.

  • The-Force
  • Registratie: April 2000
  • Laatst online: 26-11 13:55
Denk dat ik de verkeerde editor gebruik (Ultra Edit), tenminste is zie het er niet in.
Ga ff andere zoeken die newlines aankan.

  • Enfer
  • Registratie: Februari 2004
  • Laatst online: 10-10 13:28
The-Force schreef op vrijdag 09 oktober 2009 @ 09:14:
Denk dat ik de verkeerde editor gebruik (Ultra Edit), tenminste is zie het er niet in.
Ga ff andere zoeken die newlines aankan.
Bij notepad++ kun je search dmv /n/r en regular expressions aanvinken, zal bij ultraedit ook wel kunnen.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 27-11 13:05

Janoz

Moderator Devschuur®

!litemod

Je probleem heeft weinig met programmeren te maken, en al helemaal niks met Software Engineering & Architecture.

Ik verplaats je topic daarom dan ook naar OFF aangezien je probleem meer te maken heeft met 'hoe importeer ik iets goed in Excel (= office software)..

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • fsve
  • Registratie: November 2006
  • Laatst online: 17-11 20:13
Mocht je er niet uit komen (en je file is niet te top-secret ;) ) wil ik het best voor je doen.
Zelf al heel vaak dit soort conversies moeten doen en daarvoor zelf wat Progress programmatjes voor geschreven.

Succes

Be reasonable.... do it my way


  • BartS12
  • Registratie: September 2006
  • Laatst online: 22-11 23:33
mini stukje VB schrijven?
Zoiets:
Sub test()
Aantal_printers = 5900
Dim i,j As Integer
For i = 1 To Aantal_printers
For j = 1 To 6 '6 regels data per printer
Cells(i, j + 1).Value = Cells((i - 1) * 7 + j, 1).Value
Next j
Next i
End Sub
Eerst even alles 'gewoon' importeren, zodat alle data onder elkaar in kolom A staat. Vervolgens dit runnen, en je bent meteen klaar.

  • The-Force
  • Registratie: April 2000
  • Laatst online: 26-11 13:55
Het is me gelukt met Ultraedit, Regular Expressions moest even aangezet worden bij Replace
Het ging niet meteen goed met \n vervangen, want er bleven van die "hokjes" bij zitten. (unix ofzo?)
Maar die kon ik ook weer vervangen.

Bedankt voor de snelle hulp allemaal

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 27-11 13:05

Janoz

Moderator Devschuur®

!litemod

unix ofzo?
Nee, juist niet. Juist bij windows bestaat de newline uit twee tekens. Die blokjes die bleven was de \r.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

in plaats van het csv-bestand te converteren in excel, kan je ook met wat vba rechtstreeks de active directory aanspreken. onderstaande code plaatst vanaf cel a1 in werkblad 1 het overzicht met een aantal relevante eigenschappen:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Sub DomeinPrinterLijstMaken()
  Dim Domain        As String
  Dim ADORecordset  As Object
  Dim ADOQuery      As Object
  Dim ADOVerbinding As Object
  Dim RootDSE       As Object
  
  Set RootDSE = GetObject("LDAP://rootDSE")
  Domain = RootDSE.Get("defaultNamingContext")
  Set ADOVerbinding = CreateObject("ADODB.Connection")
  Set ADOQuery = CreateObject("ADODB.Command")
  ADOVerbinding.Provider = "ADsDSOObject"
  ADOVerbinding.Open "Active Directory Provider"
  Set ADOQuery.ActiveConnection = ADOVerbinding
  ADOQuery.CommandText = _
      ( _
        "SELECT printerName,driverName,portName,location,description " & _
        "FROM 'LDAP://" & Domain & "' " & _
        "WHERE objectClass='printQueue'" _
      )
  Set ADORecordset = ADOQuery.Execute
  ADORecordset.movelast
  ADORecordset.movefirst
  Worksheets(1).Range("a1").CopyFromRecordset ADORecordset
End Sub

zie ook Searching for Specific Printers in a Domain voor meer eigenschappen en http://technet.microsoft..../cc738712%28WS.10%29.aspx
Pagina: 1