c#在csv文件中将字符串分隔为不同的单元格
如何将每一行分隔成不同的单元格?我用逗号分隔信息行,但我想同样地分隔它们c#在csv文件中将字符串分隔为不同的单元格,c#,.net,csv,C#,.net,Csv,如何将每一行分隔成不同的单元格?我用逗号分隔信息行,但我想同样地分隔它们 string path = @"..\Debug\data\IrisData.csv"; var content = File.ReadAllText(path); var contentLines = content.Split('\n'); var csv = from line in contentLines sel
string path = @"..\Debug\data\IrisData.csv";
var content = File.ReadAllText(path);
var contentLines = content.Split('\n');
var csv = from line in contentLines
select line.Split(',').ToArray();
using (StreamWriter sw = new StreamWriter(path, true))
{
foreach (var data in csv)
{
foreach (var cell in data)
{
var newline = string.Format("{0}", cell);
newline = cell != data[4] ? newline + "," : newline;
sw.Write(newline);
}
sw.Write(Environment.NewLine);
}
}
Console.WriteLine("Press any key to continue...");
Console.ReadLine();
我不确定我是否理解你的问题 您是否正在尝试分离csv并将其重新组合在一起?至少你的代码对我来说是这样的 我不喜欢对每个变量使用
var
,因为它可能导致错误或意外行为。我想这也发生在你身上
String.Split(char)
返回一个String[]
foreach (var data in csv) // csv is a string[] -> data is a string
{
// data is a string which is basically a char[] -> cell is a char
// I don't think, that's what you wanted...
foreach (var cell in data)
{
var newline = string.Format("{0}", cell);
newline = cell != data[4] ? newline + "," : newline;
sw.Write(newline);
}
sw.Write(Environment.NewLine);
}
也许你可以告诉我,你真正想做什么,我可以帮你:)你可以这样尝试:
newline = cell != data[4] ? "\"" + newline + "\"," : newline;
希望这对您有所帮助您可以看看TextFieldParser: 确保添加对Microsoft.VisualBasic程序集的引用,并使用Microsoft.VisualBasic.FileIO添加
代码>
using (TextFieldParser parser = new TextFieldParser(@"..\Debug\data\IrisData.csv"))
{
parser.SetDelimiters(new String[] { "," });
while (!parser.EndOfData)
{
string[] fields = parser.ReadFields();
// fields will contain every seperated cell
}
}
“;”
将数据分离到不同的单元格。您是否收到任何错误,或者您的代码的输出是否与预期的不同。我得到了行信息,例如“萼片、萼片、花瓣、花瓣、物种”,而不是列分离的数据,如:“萼片”、“萼片”、“花瓣”、“花瓣”、“物种”,您应该尝试以这种方式拆分:字符串[]contentLines=content.Split(Environment.NewLine.ToCharArray(),StringSplitOptions.RemoveEmptyEntries)在\n
上拆分code>可能会留下一些\r
,弄乱您的列。var newline=string.Format(“{0}{1}”,Environment.newline,cell)代码>现在的输出是什么?我的csv文件中有一行信息:sepal_l,sepal_w,petal_l,petal_w,物种。我想把每个数据(由coma进行比较)放在不同的列中。嗯,我认为csv已经包含了你的数据。。您可以通过csv[lineNumber,columnNumber]
访问它。可以,但我无法将其写入csv文件。每个下一个单元格都被附加到前一个单元格上,这意味着我得到了相同的结果。