vb.net - 如何将同一文件夹中的所有csv文件合并为一个数据
问题描述
我想合并来自同一文件夹的多个具有相同布局的 csv 文件
例子 :
csv1.csv
ID, PINA,PINB,PCS
1,100,200,450
2,99,285,300
csv2.csv
ID, PINA,PINB,PCS
1,100,200,999
2,99,285,998
out.csv(我想通过 VB.net 制作的文件)
ID, PINA,PINB,PCS,PCS
1,100,200,450,999
2,99,285,300,998
我的问题代码:
Dim FileReader As StreamReader
Dim i As Integer = 0
Dim temp As String
For i = 0 To LstFiles.Items.Count - 1
FileReader = File.OpenText(LstFiles.Items.Item(i))
temp = FileReader.ReadToEnd
File.AppendAllText(SaveFileDialog1.FileName, temp)
Next
请指导我。
非常感谢 !
解决方案
在我看来,输入文件中的每一行都有一个基于该行中第一个值的标识符。您希望将 ListBox 中所有文件中该标识符之后的所有数字组合成一个数字列表,该列表已排序且没有重复项。然后,您要生成一个输出文件,其中包含所有这些标识符,后跟每组排序的唯一数字。
如果这是正确的,那么试试这个:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If SaveFileDialog1.ShowDialog = DialogResult.OK Then
Dim header As String = ""
Dim combinedLines As New SortedList(Of Integer, List(Of Integer))
For Each filename As String In LstFiles.Items
Dim lines = File.ReadLines(filename)
If header = "" Then
header = lines.First
End If
lines = lines.Skip(1)
For Each line As String In lines
Dim strValues = line.Split(",").AsEnumerable
Try
Dim lineNumber As Integer = Integer.Parse(strValues.First)
strValues = strValues.Skip(1)
Dim numbers = strValues.ToList.ConvertAll(Of Integer)(Function(x) Integer.Parse(x))
If Not combinedLines.ContainsKey(lineNumber) Then
combinedLines.Add(lineNumber, New List(Of Integer)(numbers))
Else
combinedLines(lineNumber).AddRange(numbers)
End If
Catch ex As Exception
MessageBox.Show("Error Parsing Line: " & line)
End Try
Next
Next
Using sw As New StreamWriter(SaveFileDialog1.FileName, False)
sw.WriteLine(header)
For Each numberSet In combinedLines
Dim numbers = numberSet.Value.Distinct.ToList
numbers.Sort()
sw.WriteLine(numberSet.Key & "," & String.Join(",", numbers))
Next
End Using
End If
End Sub
推荐阅读
- c# - 在我的gridview中更改文本框的问题
- linux - Docker OCI 运行时创建失败:container_linux.go:349:启动容器进程导致
- spring - Kafka 收到消息时,未使用 Spring 找到线程绑定请求
- mysql - 如何在 sql 中获取 Group_Concat 数据的单个计数?
- python - Getting data outside of a list in python
- css - 如何将动画添加到材质 ui 卡
- ios - 删除最初不活动的队列
- r - How to get the n most common items in each group
- c# - Error when inject service into startup constructor
- php - 创建一个 for 循环以遍历大量 URL