我试图根据第一列中的内容将 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()
从小事做起,让第一部分工作:
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