CSV dosya okuma?

  • Konuyu başlatan Konuyu başlatan algea
  • Başlangıç tarihi Başlangıç tarihi

algea

Doçent
Katılım
15 Temmuz 2011
Mesajlar
505
Reaksiyon puanı
22
Puanları
18
Arkadaşlar merhaba bir csv dosyadan veri okumaya çalışıyorum bir türlü başaramadım. ilk satır neden çıkmıyor. Bir inceleyebilir misiniz?
File1.csv:
1,2,3
4,5,6
7,8,9

output:
4 5 6
7 8 9

code:
Kod:
Module Module1

    Sub Main()
        Dim dt As DataTable = Nothing
        Dim FileName As String = "C:\Temp\file1.csv"
        dt = GetCsvData("C:\Temp\", "file1.csv")
        For r As Integer = 0 To dt.Rows.Count - 1
            For c As Integer = 0 To dt.Columns.Count - 1
                Console.Write(dt.Rows(r).Item(c).ToString + " ")
            Next
            Console.WriteLine()
        Next
        Console.ReadKey()

    End Sub
    Public Function GetCsvData(ByVal strFolderPath As String, ByVal strFileName As String) As DataTable

        Dim strConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFolderPath & ";Extended Properties=Text;"
        Dim conn As New System.Data.OleDb.OleDbConnection(strConnString)

        Try
            conn.Open()
            Dim cmd As New System.Data.OleDb.OleDbCommand("SELECT * FROM [" & strFileName & "]", conn)
            Dim da As New System.Data.OleDb.OleDbDataAdapter()

            da.SelectCommand = cmd

            Dim ds As New DataSet()

            da.Fill(ds)
            da.Dispose()

            Return ds.Tables(0)
        Catch
            Return Nothing
        Finally
            conn.Close()
        End Try

    End Func
 

hokumus

Asistan
Katılım
15 Mayıs 2012
Mesajlar
173
Reaksiyon puanı
3
Puanları
18
Selamlar,

Aslında kodunuz doğru çalışıyor. İlk satır çıkmaz. Çünkü siz bağlantı cümlesini yazarken provider' a bağlantı kurulacak olan dosyada header olmadığını söylemiyorsunuz. Otomatik olarak ilk satır header olarak kabul edilir ve diğer satırlar bu kolonların altında sıralanır.

Provider' a header olup olmayacağını aşağıdaki gibi belirtebilirsiniz.

HDR=Yes => Header var
HDR=No => Header Yok

Bu ifadeleri kullanmadığınızda provider default olarak HDR=Yes olarak kabul eder.
Evet gelelim connection string' in son haline. Aşağıdaki ifadeyi kendi bağlantı cümlenizle değiştirin çalışacaktır.

Kod:
Dim strConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFolderPath & ";Extended Properties=""Text; HDR=NO;"""

Bağlantı cümlesini hatalı yazarsanız, Yüklenebilir ISAM bulunamadı hatası alabilirsiniz.
Dikkat.


Başarılar dilerim.
 

algea

Doçent
Katılım
15 Temmuz 2011
Mesajlar
505
Reaksiyon puanı
22
Puanları
18
Teşekkürler sorun çözüldü
 

algea

Doçent
Katılım
15 Temmuz 2011
Mesajlar
505
Reaksiyon puanı
22
Puanları
18
Peki aynı işlemi excel de yapar iken ne yapmamız gerekiyor. Aşağıda bir kod buldum HDR=NO; ilave edince hata veriyor. Cevap verebilirseniz sevinirim...
Kod:
Module Module1

    Sub Main()
        Dim MyConnection As System.Data.OleDb.OleDbConnection
        Dim DtSet As System.Data.DataSet
        Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
        'Fill the [Excel file fullpath] with specific value
        MyConnection = New System.Data.OleDb.OleDbConnection _
        ("provider=Microsoft.ACE.OLEDB.12.0;Data Source= C:\Temp\Kitap1.xlsx; Extended Properties=Excel 12.0;")
        MyCommand = New System.Data.OleDb.OleDbDataAdapter _
            ("select * from [Sayfa1$]", MyConnection)
        MyCommand.TableMappings.Add("Table", "TestTable")
        DtSet = New System.Data.DataSet
        MyCommand.Fill(DtSet)
        Dim dt As DataTable = DtSet.Tables(0)
        MyConnection.Close()
        For r As Integer = 0 To dt.Rows.Count - 1
            For c As Integer = 0 To dt.Columns.Count - 1
                Console.Write(dt.Rows(r).Item(c))
            Next
            Console.WriteLine()
        Next
        Console.ReadKey()
    End Sub

End Module

- - - Mesaj Güncellendi - - -

sorun çözüldü:
MyConnection = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Temp\Kitap1.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=NO"";")
olacaktı
 
Üst