Avatar billede badedyr Nybegynder
01. marts 2001 - 19:30 Der er 15 kommentarer og
1 løsning

Import CSV fil

Jeg har nogle .csv filer over nogle logs som jeg gerne vil kunne importere til et program jeg er ved at lave i VB. Jeg er begynder til VB, men har en ide om at de værdier der er i csv filen skal jeg kunne vise i en tabel eller lignende i VB. Det er rent eksperiment for at lære det.
Jeg har ikke kunnet finde et eneste sted hvor det er beskrevet på netttet. Jeg vil gerne lave det sådan at man kan lave en \"browse\" funktion så brugeren kan vælge hvilken csv fil der skal importeres.
Avatar billede joern Nybegynder
01. marts 2001 - 21:05 #1
Hej dyr.

Mig bekendt er der ingen smutveje men kun cool kode.  Men når det er en øvelse er det vel også det bedste.

Du skal lave en løkke, der bliver ved at køre så længe der forekommer kommaer i den indlæste tekststreng.  Når du læser fra en fil med \"Line Input\" læses frem til næste CR, altså linieskift.  En kommafil med mening må have lige mange felter i hver linie, ellers kan den næppe bruges til noget af nogle andre programmer.
Den del hvor brugeren vælger fil kan udformes på forskellig måde.  Du kan tilknytte kontrollen for standarddialogboks til åbning af filer: mscomm32.ocx, fortsæt evt. spørgsmålet om dette er et problem.

Løkken kunne se sådan ud, jeg angiver ikke Dim af variable, det kan du vel, men der skal være et todimensionelt array; eller skriver du efterhånden til liste eller lign?

  Open sti\\filename for input as #1
    Do while EOF(1)=false
      line input #1, string
igen:       
        k=instr(sting,\",\")
        data(x,y)=left$(string,k-1)
        string=mid$(string,k+1)
        if instr(string,\",\")>0 then
          y=y+1
          goto igen
        end if
      x=x+1
    Loop
  close #1

Hvis csv-filen indeholder tekst vil der ofte være \" om teksten, så må du søge på \",\" med instr, eller fjerne anførselstegn i en ekstra runde.  Hvis csv-filen kun indeholser tal har du ikke dette problem.  Opfat ovenstående som en skitse.

M.v.h.  Jørn   

Avatar billede cstern Nybegynder
01. marts 2001 - 21:06 #2
PS. I Danmark er separatoren \";\" ikke \",\", men det burde ikke volde problemer at ændre koden...
Avatar billede jespernaur Nybegynder
01. marts 2001 - 22:03 #3
Det komplicerer sagen hvis tekster inden i anførselstegn i sig selv indeholder enten kommaer eller anførselstegn. Kommaer i tekster må ikke opfattes som separatorer, anførselstegn i tekster er normalt \'escapet\' på den ene eller anden måde, afhængig af, hvilket program der har genereret csv-filen.

Mvh
Jesper Naur
Avatar billede badedyr Nybegynder
01. marts 2001 - 22:24 #4
damn det ser ikke nemt ud for en newbie, måske det er for stor en mundfuld.
Det er POPBeamer (en pop3 connector til exchange der har genereret csv filerne)

Ville det hjælpe hvis jeg postede lidt af indholdet fra en csv fil?
Avatar billede jsc Nybegynder
01. marts 2001 - 22:38 #5
csv-filer? er det tekst-filer?

vis det er så kunne du jo også bruge noget som dette her:   
filnavn = InputBox$(\"Skriv navnet på filen: HUSK max 8 tegn\", \"max 8\")
    Open filnavn For Input As #1
    txtvindue = Input$(FileLen(filnavn), #1)
    lblfilåben = filnavn
    Close #1
Avatar billede jsc Nybegynder
01. marts 2001 - 22:39 #6
undskyld sådan:

    filnavn = InputBox$(\"Skriv navnet på filen: HUSK max 8 tegn\", \"Tekstbeskyttelse 2.0\")
    Open filnavn For Input As #1
    txtvindue = Input$(FileLen(filnavn), #1)
    Close #1
Avatar billede cstern Nybegynder
01. marts 2001 - 22:49 #7
csv = comma separated values. Ja, rene tekstfiler.
Eks:
1;5;1;;7;33;1;5,2;12,1;3,1415;0;
etc
Avatar billede jsc Nybegynder
01. marts 2001 - 22:56 #8
så kan han/hun jo bare bruge min ovenstående kode.

/jsc
Avatar billede jespernaur Nybegynder
02. marts 2001 - 02:16 #9
Under forudsætning af, at filen kun indeholder en enkelt linie (dette er kun sjældent opfyldt).
Avatar billede jsc Nybegynder
02. marts 2001 - 07:25 #10
ja det er rigtigt!

/jsc
Avatar billede jsc Nybegynder
02. marts 2001 - 07:27 #11
==>Badedyr

Prøv alligevel min kode!

/jsc
Avatar billede johs_j Novice
03. marts 2001 - 15:30 #12
Har I aldrig hørt om Commondialog til at finde filnavne?
Avatar billede joern Nybegynder
03. marts 2001 - 19:06 #13
>>johs j.  Er det en kommentar til jsc  01-03-2001  22:39 ?  Eller sådan i bred almindelighed?
I mit svar højere oppe skriver jeg bl.a.: Den del hvor brugeren vælger fil kan udformes på forskellig måde.  Du kan tilknytte kontrollen for standarddialogboks til åbning af filer: mscomm32.ocx, fortsæt evt. spørgsmålet om dette er et problem.

M.v.h.  Jørn
Avatar billede johs_j Novice
03. marts 2001 - 20:18 #14
>>Jørn
Undskyld. Det så jeg ikke.
mvh
Johs
Avatar billede joern Nybegynder
03. marts 2001 - 21:48 #15
>>Johs j.  Godt ord igen!    m.v.h.  Jørn
Avatar billede badedyr Nybegynder
09. marts 2001 - 14:54 #16
Undskyld den lange svartid. Jeg kan se at det ikke er noget jeg skal gå igang med at lave nu. Mine evner rækker ikke så vidt - endnu! Men jeg gemmer Joern\'s svar til senere brug!
Tak for hjælpen alle sammen!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester