在vb.net中将一个csv文件分割成多个csv文件

问题描述 投票:0回答:1

我试图根据第一列中的内容将 1 个 csv 分成多个 csv 文件。

示例:

主文件.csv

101,雅各布斯,123456

111,乔伊,78910

101,比利,654321

111,罗伯特,45612

如果文件第一列中有 101,我将尝试创建一个新的 csv 文件,并以此为名称,并且仅将数据写入第一列中有 101 的文件,并继续沿着列表一直向下。

示例:

101.csv

101,雅各布斯,123456

101,比利,654321

111.csv

111,乔伊,78910

111,罗伯特,45612

我目前得到的要么是空白,要么当我更改周围的内容时,我会获取每个 csv 文件中的所有数据,并提供所有帮助。

到目前为止我所拥有的:

reader = New StreamReader("R:\FilePath\MainFile.csv")
Dim stALL As String = reader.ReadToEnd
Dim LineToWrite As String
Dim LineOfMonitorID = File.ReadAllLine("R:\FilePath\MainFile.csv")
For x_DOF = 1 TO LineCount 'Counting all line in the MainFile
    Dim data = LineOfMonitorID(x_DOF)
    Dim splits = data.Split(","c)
    For y_DOF = 0 To 2DArray.GetUpperBound(1)
        2DArray(x_DOF, y_DOF) = splits(y_DOF)
        MonitorID = 2DArray(x_DOF, 0)
        LineToWrite = 2DArray(x_DOF, y_DOF)
    Next 'y_DOF
    If MonitorID = "101" Then
        MonitorIDTextFile = New StreamWritter("R:\PathToNewFile\101.scv", True)
        MonitorIDTextFile.WriteLine(LineToWrite)
    ElseIf MonitorID = "111" Then
        MonitorIDTextFile = New StreamWritter("R:\PathToNewFile\111.scv", True)
        MonitorIDTextFile.WriteLine(LineToWrite)
    End If
    MonitorIdTextFile.Close()
Next 'x_DOF
reader.Close()
vb.net multidimensional-array streamreader streamwriter read.csv
1个回答
0
投票

从小事做起,让第一部分工作:

Dim newFileFolder As String = "R:\PathToNewFile\"
Dim dataFile As String = "R:\FilePath\MainFile.csv"

Dim lines() As String = File.ReadAllLines(dataFile)
For i As Integer = 0 To lines.Count - 1
    Dim line As String = lines(i)
    Dim values() As String = line.Split(","c)
    Dim MonitorID As String = values(0)
    Dim newFileName = Path.Combine(newFileFolder, MonitorID & ".csv")
    IO.File.AppendAllText(newFileName, line & Environment.NewLine)
Next
© www.soinside.com 2019 - 2024. All rights reserved.