c#在CSV文件中把字符串分成不同的单元格
本文关键字:单元格 字符串 CSV 文件 | 更新日期: 2023-09-27 18:11:20
如何将每行分隔成不同的单元格?我得到了用逗号分隔的信息行,但我想以同样的方式分隔它们。
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();
你可以这样尝试:
newline = cell != data[4] ? "'"" + newline + "'"," : newline;
";"
分隔数据到不同的单元格
您可以查看TextFieldParser:
确保添加对Microsoft的引用。VisualBasic Assembly,并添加using 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
}
}
我不确定我是否理解了你的问题。
您是否试图将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);
}
也许你可以告诉我,你真正想做什么,这样我可以帮助你:)