C# 如何在StringBuilder忽略csv的第一行/行的情况下写入csv文件?
因为这个CSV文件的第一行已经包含了列名,所以我只想忽略第一行,然后用StringBuilder从第二行开始写C# 如何在StringBuilder忽略csv的第一行/行的情况下写入csv文件?,c#,csv,stringbuilder,C#,Csv,Stringbuilder,因为这个CSV文件的第一行已经包含了列名,所以我只想忽略第一行,然后用StringBuilder从第二行开始写 StringBuilder sb = new StringBuilder(); foreach (DataRow dr in distinctValues.Rows) { vendor = dr.ItemArray[0].ToString(); for (int i = 0;
StringBuilder sb = new StringBuilder();
foreach (DataRow dr in distinctValues.Rows)
{
vendor = dr.ItemArray[0].ToString();
for (int i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
{
if (vendor == ds.Tables[0].Rows[i]["VendorCode"].ToString())
{
for (int j = 0; j <= ds.Tables[0].Columns.Count - 1; j++)
{
if (j != 0)
sb.Append(",");
sb.Append(ds.Tables[0].Rows[i][ds.Tables[0].Columns[j]]);
}
sb.AppendLine();
}
}
File.WriteAllText(@csvFile, sb.ToString());
}
StringBuilder sb=新建StringBuilder();
foreach(数据行dr in distinctValues.Rows)
{
vendor=dr.ItemArray[0].ToString();
对于(inti=0;i类似的东西
class Program
{
private const string csv ="Header\r\nLine1\r\nLine2";
static void Main(string[] args)
{
StringReader reader = new StringReader(csv);
StringBuilder builder = new StringBuilder();
bool header = true;
while (true)
{
string line = reader.ReadLine();
if(header)
{
header = false;
continue;
}
if (line == null)
break;
builder.AppendLine(line);
}
Console.WriteLine(builder.ToString());
Console.ReadLine();
}
}
HTH试试看
或
FileMode.Append
通过FileStream
如果是File.AppendText
,在下面的示例中,对sb.AppendLine()
的所有调用都将变成sw.WriteLine()
:
// This text is always added, making the file longer over time
// if it is not deleted.
using (StreamWriter sw = File.AppendText(path))
{
sw.WriteLine("This");
sw.WriteLine("is Extra");
sw.WriteLine("Text");
}
向我们展示你目前拥有的代码。你目前拥有的代码是什么?这不是一项困难的任务。你是否尝试过在互联网上搜索C#示例?听起来你好像没有尝试过anything@DJKRAZE我试过了。但是只有读csv文件而不是写csv文件的解决方案。在第一行之后有没有行包含您想要的列名要保留吗?我认为您应该改为以追加模式编写文件。查看FileMode.append。如果您真的喜欢这个答案,那么盲目地调用reader.ReadLine()可能更简单然后在开始循环之前放弃结果。这将删除循环体中的所有条件逻辑,因为您知道您已经放弃了第一行。当然,假设头将始终存在于文件中。这些类型的不变量使生活变得更简单。伙计,你很快也很聪明。谢谢兄弟。有什么我能做的吗哦,救命啊。