使用VB.NET对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

我有一个没有标题的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 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谢谢你的耐心,我已经上传了数据