我正在尝试创建一个将拉入,读取和分离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)
请记住,值由列号访问,然后是行号.
我希望这有帮助.