使用vb.net解析大型csv文件而不换行

时间:2014-11-13 16:32:30

标签: vb.net substring string-split

我得到了一个用java程序创建但没有LF或endofline结尾的文件,所以我正在使用一个巨大的字符串。我尝试拆分然后使用TextFieldParser,但似乎文件太大而无法处理。内容至关重要,我需要以某种方式获取此数据,然后清理它。这是我尝试过的:

Using MyReader As New Microsoft.VisualBasic.FileIO.TextFieldParser("C:\Users\Desktop\META3.txt")
        MyReader.TextFieldType = FileIO.FieldType.Delimited
        MyReader.SetDelimiters(",")
        Dim currentRow As String()
        While Not MyReader.EndOfData
            Try
                currentRow = MyReader.ReadFields()
                Dim currentField As String
                For Each currentField In currentRow
                    MsgBox(currentField)
                Next
            Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
                MsgBox("Line " & ex.Message & "is not valid and will be skipped.")
            End Try
        End While
    End Using

我认为最好的方法是获取文本的子字符串,并且我希望在逗号的7次出现之后获取所有值,这是文件应该每行的内容。不知道如何做到这一点,似乎正则表达式可能是唯一的选择。任何想法都赞赏。

            line = freader.Readline() 
            Dim ms As Match = Regex.Match(line, "(\w+),(\w+),(\w+),(\w+),(\w+),(\w+),")
            line = ms.Value
这将是有效的;没有给出预期的结果。

1 个答案:

答案 0 :(得分:0)

如果可以保证列数始终一致,为什么不添加一个读取每列然后进入下一组的计数器。然后,您可以使用正确的格式创建新的电子表格或文件。如果你在这里搜索,有一个.net包,它允许你动态地构建有效的.xls和.xlsx文件。该包被称为“简单的ooxml”。我用它来创建我工作的各种电子表格。我构建了一个命令行应用程序,它传递带有参数的xml文件,并将其构建为完全成熟的电子表格。希望以上有所帮助。有任何问题让我知道。