Building a DataTable from CSV file ? ASP.net VB

Uswichlmy

New Member
I have a function that reads CSV files and build a datatable. I won't claim it is my own coz it is not. I don't remember where I got it but it is combination from few different sources. My function works fine until I need to process some CSVs which has "," commas in the value. Can anyone help me to solve this out to handle this issue ?Thanks a lot .. Sample CSV File\[code\] FirstName, LastName, Comment, "address, just city", John, Smith, "you are very good, but ugly", London, Britney, Spear, "I am a singer, and beautiful", New York,\[/code\]My function\[code\] Public Function BuildDataTable() As DataTable Dim myTable As DataTable = New DataTable("MyTable") Dim i As Integer Dim myRow As DataRow Dim fieldValues As String() Dim myReader As IO.StreamReader Dim csv2xml As New csv2xml Try 'Open file and read first line to determine how many fields there are. myReader = File.OpenText(_fileFullPath) fieldValues = myReader.ReadLine().Split(_seperator) 'Create data columns accordingly If _hasheader = False Then For i = 0 To fieldValues.Length() - 1 myTable.Columns.Add(New DataColumn("Column(" & i & ")")) Next Else 'if the file has header, take the first row as header for datatable For i = 0 To fieldValues.Length() - 1 myTable.Columns.Add(New DataColumn(fieldValues(i).Replace(" ", ""))) Next End If 'Adding the first line of data to data table myRow = myTable.NewRow 'if the csv file has not got a column header. defined by radio button list on first page by user 'if csv file has header, then not need to read the first line If _hasheader = False Then For i = 0 To fieldValues.Length() - 1 myRow.Item(i) = fieldValues(i).ToString Next myTable.Rows.Add(myRow) End If 'Now reading the rest of the data to data table While myReader.Peek() <> -1 fieldValues = myReader.ReadLine().Split(_seperator) myRow = myTable.NewRow For i = 0 To fieldValues.Length() - 1 myRow.Item(i) = fieldValues(i).Trim.ToString Next 'check if there are empty rows in csv, ignore empty rows If Not csv2xml.AreAllColumnsEmpty(myRow) = True Then myTable.Rows.Add(myRow) End If End While Catch ex As Exception 'MsgBox("Error building datatable: " & ex.Message) Dim oError As ErrorLog = New ErrorLog oError.LogError(_strWebsiteName, _ loginID, _ ex.Source.ToString, _ ex.Message.ToString, _ , _ ex.StackTrace.ToString) oError = Nothing Return New DataTable("Empty") 'Server.Transfer(CustomErrorPage) Finally csv2xml = Nothing myRow = Nothing End Try myReader.Close() Return myTable End Function\[/code\]
 
Back
Top