İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

CSV dosya okuma?

algea23.07.20143 cevap3.731 görüntüleme
2011'den beri505 mesaj
#1
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:
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
Cevaplar
2012'den beri173 mesaj
#2
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.

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 Konuyu açan
2011'den beri505 mesaj
#3
Teşekkürler sorun çözüldü
algea Konuyu açan
2011'den beri505 mesaj
#4
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...
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ı

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.