Version: VB.NET 2003
Compatibility: VB.NET 2003, ASP.NET 1.1
Category: ASP.NET
Code for CSV Parsing in .NET.
Declarations:
Imports System
Imports System.IO
CODE:
Module modParseCSV
Public Sub ReadFromFile(ByVal strPath As String)
Dim FileHolder As FileInfo = New FileInfo(strPath)
Dim ReadFile As StreamReader = FileHolder.OpenText()
Dim InputText As String
Dim strLine
Do
strLine = ReadFile.ReadLine
If Not strLine = "" Then
ParseCSV(strLine)
MsgBox("ENDLINE")
Else
ReadFile.Close()
ReadFile = Nothing
End If
Loop Until ReadFile Is Nothing
Return True
End sub
Public Sub ParseCSV(ByVal CSVstr As String)
Dim startPos As Integer
Dim endPos As Integer
Dim currPos As Integer
Dim tempPos As Integer
Dim tempstr As String
Dim commaPos As Integer
Dim quotePos As Integer
Dim strLen As Integer
Dim charLen As Integer
startPos = 1
currPos = 1
strLen = Len(CSVstr)
Do While strLen <> 0
CSVstr = Replace(CSVstr, Chr(34) & Chr(34), "'")
commaPos = InStr(currPos, CSVstr, ",")
quotePos = InStr(currPos, CSVstr, Chr(34))
'last data
If commaPos = 0 Then
If quotePos = 0 Then
If Not currPos > endPos Then
endPos = strLen + 1
charLen = endPos - currPos
tempstr = Mid(CSVstr, currPos, charLen)
'If Not tempstr = "" Then
ReadChars(tempstr, 1, charLen, charLen)
'End If
End If
Else
currPos = quotePos
endPos = InStr(currPos + 1, CSVstr, Chr(34))
charLen = endPos - currPos
tempstr = Mid(CSVstr, currPos + 1, charLen - 1)
'If Not tempstr = "" Then
ReadChars(tempstr, 1, charLen, charLen)
'End If
End If
Exit Do
End If
'no " in line
If quotePos = 0 Then
endPos = commaPos
charLen = endPos - currPos
tempstr = Mid(CSVstr, currPos, charLen)
'If Not tempstr = "" Then
ReadChars(tempstr, 1, charLen, charLen)
'End If
ElseIf (quotePos <> 0) Then
'" in line
If commaPos < quotePos Then
endPos = commaPos
charLen = endPos - currPos
tempstr = Mid(CSVstr, currPos, charLen)
'If Not tempstr = "" Then
ReadChars(tempstr, 1, charLen, charLen)
'End If
Else
currPos = quotePos
endPos = InStr(currPos + 1, CSVstr, Chr(34))
charLen = endPos - currPos
tempstr = Mid(CSVstr, currPos + 1, charLen - 1)
'If Not tempstr = "" Then
ReadChars(tempstr, 1, charLen, charLen)
'End If
endPos = endPos + 1
End If
End If
currPos = endPos + 1
Loop
End sub
Public Function ReadChars(ByVal str As String, ByVal StartPos As Integer, ByVal EndPos As Integer, ByVal strLen As Integer)
Dim strArray As [String] = str
Dim b(strLen) As Char
Dim sr As New StringReader(strArray)
sr.Read(b, 0, EndPos)
MsgBox(b)
sr.Close()
End Function
End Module
0 comments:
Post a Comment