使用VB.NET对CSV文件中的列重新排序
我有一个没有标题的CSV文件,需要根据配置文件重新排序。 我用这个代码来做使用VB.NET对CSV文件中的列重新排序,vb.net,csv,Vb.net,Csv,我有一个没有标题的CSV文件,需要根据配置文件重新排序。 我用这个代码来做 Dim csvFile As String = "C:\Text.csv" Dim lines = File.ReadAllLines(csvFile) Dim outFile As String = "C:\Text2.csv" Dim data As String() Dim format As String = "{0}, {1}, {2}, {3}" Using fs As New StreamWrite
Dim csvFile As String = "C:\Text.csv"
Dim lines = File.ReadAllLines(csvFile)
Dim outFile As String = "C:\Text2.csv"
Dim data As String()
Dim format As String = "{0}, {1}, {2}, {3}"
Using fs As New StreamWriter(outFile, False)
For Each s As String In lines
data = s.Split(","c)
fs.WriteLine(String.Format(format,
data(0),
data(1),
data(2),
data(3),
data(4),
data(5)
)
)
Next
End Using
但是,因为我希望它是动态的,所以我编写了一个函数,用于读取配置文件并生成格式字符串的输出
代码看起来像
Dim lines = File.ReadAllLines(Filepath)
Dim outFile As String = "C:\Out.csv"
Dim data As String()
Dim format As String = CReadConfig.ReadConfigsource(ConfigFilepath)
Dim str As String
Using fs As New StreamWriter(outFile, False)
For Each s As String In lines
data = s.Split(","c)
' specifiy the columns to write in
' the order desired
Form1.TextBox1.Text = CReadConfig.ReadConfigtarget(ConfigFilepath)
str = CReadConfig.ReadConfigtarget(ConfigFilepath)
fs.WriteLine(String.Format(format, CReadConfig.ReadConfigtarget(ConfigFilepath)))
函数的输出如下所示
CReadConfig.ReadConfigsource(ConfigFilepath)={0}、{1}、{2}、{3}
CReadConfig.ReadConfigtarget(ConfigFilepath)=
数据(3)、数据(2)、数据(1)、数据(0)
然而,我得到了一个错误
索引(从零开始)必须大于或等于零且小于参数列表的大小
当我用其输出替换CReadConfig.ReadConfigtarget(ConfigFilepath)
函数时
数据(3)、数据(2)、数据(1)、数据(0)
代码可以工作,但是当替换为提供相同输出的函数时,我得到了上面提到的错误
有人能告诉我怎么做吗?或者有没有更简单的方法来实现重新排序
上传
数据:配置文件:
Source,Target
1,2
2,3
3,1
4,4
5,6
6,5
您可以读取
List(Of List(Of String))
外部列表中的每个元素都包含一行(字段列表)。这样你就可以随心所欲地订购了。在将这些列表写入文件之后,您不能将数据引用抽象为字符串data(3)、data(2)、data(1)、data(0)
,该部分不需要在配置文件中。写入行的data()
args将始终保持相同的顺序-只需更改format
参数使用的“映射”。您还没有在配置文件中显示实际数据,这将帮助我们了解完整情况。如果我们有,我们可以帮助代码将其转换为所需的格式
字符串。@puropoix-感谢您的响应,所附图片显示了配置文件。这是一个包含两列的CSV文件,第一列是列的初始位置,第二列是列的新位置。图片与实际数据不同。它可能很好地代表了这个概念,但它不是实际的数据。我无法为您提供一种方法,在不查看实际数据的情况下,将配置数据读取/解析/存储为工作格式字符串。没有人能做到,而这正是你目前所坚持的。@Protonix谢谢你的耐心,我已经上传了数据