使用VB.NET重新排序CSV文件中的列

时间:2016-01-27 06:55:10

标签: vb.net csv

我有一个没有标题的CSV文件需要根据配置文件重新排序。 Input CSV on the left ;example config file on the right

我正在使用此代码来执行此操作

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

然而,由于我希望它是动态的,我写了一个函数,它读取Config文件并为格式字符串生成输出。

代码看起来像

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)

代码有效,但是当用提供相同输出的函数替换时,我得到上面提到的错误。

有人可以告诉我们如何解决这个问题。或者有更简单的方法来实现重新排序。

上传 数据:http://www.filedropper.com/data_14
配置文件:

Source,Target
1,2
2,3
3,1
4,4
5,6
6,5

0 个答案:

没有答案