Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: [VB .NET] .TXT->VB.NET->Excel (VBA)

timo80 [05.08.2008 13:47:39]

#

Elikäs minulla on ongelmana tekstitiedostojen siirto Exceliin, VB.NET kenttien kautta. Kävin vanhoja ketjuja läpi 2004 vuoteen asti, mutta oikein sopivaa/toimivaa ratkaisua en löytänyt. Lisäksi olen täysin aloittelija ohjelmoinnissa, joten ehkä siinä yksi syy.


Tekstitiedostot ovat testiraportteja, joissa on läjät tietoa ja vain muutamalla rivillä tietoa, joka tulee siirtää Exceliin. Kuinka siis pystyn avaamaan ja siirtämään tekstitiedostosta esim. rivien 10,25,26,27,28,34,35,36,37 tiedot VB:hen. Tiedot olisi hyvä päästä kasaamaan ensin VB:ssä, sillä samaan Excel malliin joutuu hakemaan usein raportteja useasta tiedostosta.

Lisäksi rivit ovat otsikkotietorivejä lukuunottamatta ryppäissä, sillä yhteen testiin kuuluu 4 tulosta, jotka ovat jaettu eri riveille. Joka rivin tieto olisi tarkoitus saada omaan sarakkeeseensa (yksi testi = yksi rivi ja neljä saraketta. Positiot ovat aina samat, eli tietyllä rivillä tiedostossa on aina otsikko/muuta tietoa ja toisilla testituloksia.

Kiitoksia etukäteen.

Grez [05.08.2008 14:20:27]

#

Vaihtoehtoisia tapoja toteuttamiseen on varmaan rajattomasti, mutta tässä yksi tapa käsitellä vain halutut rivit:

Dim rdr As New System.IO.StreamReader("Tiedosto.txt")
Dim rivi As Integer
Dim rividata As String
For rivi = 1 To 37
    If rdr.EndOfStream Then
        'Tiedosto loppui kesken, käsittele tilanne
        'Koodi tänne

        '(poistu loopista)
        Exit For
    End If
    rividata = rdr.ReadLine()
    Select Case rivi
        Case 10, 25, 26, 27, 28, 34, 35, 36, 37
            'Käsittele tiedot täällä
    End Select
Next
rdr.Close()

timo80 [06.08.2008 09:27:40]

#

Kiitoksia paljon!

timo80 [07.08.2008 09:09:01]

#

Vielä löytyisi jatkokysymys asian tiimoilta. Onnistuuko Case rakenteeseen lisäämään vielä tiedon hakua rivin tietystä kohtaa esim. Tekstitiedoston rivillä kolme lukee:

R32525 Type: 80 / 500 - 50

Eli tarkoituksena olisi lukea kolmos riviä ja napata tiedot 80, 500 ja 50 omiin textbokseihinsa. Lukujen arvot voivat vaihtelevat 10 ja 10000 välillä. tiedot itsessään pitäisivät olla aina samalla kohdalla riviä, mutta tosiaan arvot voivat vaihdella suuresti. Onnistuuko tämä Case pohjalta jotenkin vaiko pitääkö tiedon noukkiminen toteuttaa jotenkin muuten?

timo80 [07.08.2008 13:33:43]

#

Nevermind, sain homman toimiin Casella.

Grez [07.08.2008 15:28:51]

#

Jos ne on aina samoissa kohti riviä niin joku rivi.Substring(alku,pituus) luulisi toimivan aika hyvin. Toki esim. Split voi olla parempi jos sijainti vaihtelee mutta erotinmerkit ovat vakiot.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta