使用C#将CSV文件读入数组

rre*_*hel 2 c# csv arrays

我正在尝试创建一个将拉入,读取和分离csv文件的代码.它有四列没有标题.我一直在网上搜索几个小时,似乎没有人真的有答案,所以我希望有人在这里.在读入之后,我需要它能够非常特别地拉动,因为它是设计的一部分.提前谢谢!

小智 6

你的问题有点模糊,但我会尽力回答.

CSV文件(根据定义)是包含逗号分隔值的文件 - 这里的关键是使用逗号作为分隔符.就个人而言,我发现使用不同的分隔符在解析时容易产生较少的恶意.

我创建了以下测试CSV文件:

Column1,Column2,Column3,Column4
Row1Value1,Row1Value2,Row1Value3,Row1Value4
Row2Value1,Row2Value2,Row2Value3,Row2Value4
Row3Value1,Row3Value2,Row3Value3,Row3Value4
Row4Value1,Row4Value2,Row4Value3,Row4Value4
Row5Value1,Row5Value2,Row5Value3,Row5Value4
Run Code Online (Sandbox Code Playgroud)

这里有一些代码可以将该文件读入一些您可以操作的简单结构中.您可能希望通过为列和行(以及值)创建类来扩展此代码.

        string sFileContents = "";

        using (StreamReader oStreamReader = new StreamReader(File.OpenRead("Test.csv")))
        {
            sFileContents = oStreamReader.ReadToEnd();
        }

        List<string[]> oCsvList = new List<string[]>();

        string[] sFileLines = sFileContents.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
        foreach (string sFileLine in sFileLines)
        {
            oCsvList.Add(sFileLine.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries));
        }

        int iColumnNumber = 0;
        int iRowNumber = 0;

        Console.WriteLine("Column{0}, Row{1} = \"{2}\"", iColumnNumber, iRowNumber, oCsvList[iColumnNumber][iRowNumber]);

        iColumnNumber = 4;
        iRowNumber = 2;

        Console.WriteLine("Column{0}, Row{1} = \"{2}\"", iColumnNumber, iRowNumber, oCsvList[iColumnNumber][iRowNumber]);
Run Code Online (Sandbox Code Playgroud)

请记住,值由列号访问,然后是行号.

我希望这有帮助.