微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C#、windows 窗体、StremWriter、标题行

如何解决C#、windows 窗体、StremWriter、标题行

我正在尝试在运行的 csv 文件日志中添加标题。这就是我想要的,

项目名称、项目 SN、项目构建

在那一行之后,我希望每次都将数据添加到下一行。

这是我目前所拥有的。

// 写入 CSV 字符串路径 = 如果 (!File.Exists(path)) { File.CreateText(path);

        }

        string projectName = ProjectName_TextBox.Text;
        string projetcBuild = ProjectBuild_TextBox.Text;
        string projectSN = SN_TextBox.Text;
        string header = "Project Name,Project Build,Project SN\n";

        
        using (StreamWriter sw = new StreamWriter(path,true)) // true for appending data to file,false to overwrite in file
        {
           
            sw.WriteLine(header);
            
           
            sw.WriteLine(string.Format(projectName + "," + projetcBuild.ToString() + "," + projectSN.ToString()));
            
            
        }

它的作用是在每次单击按钮时添加标题和数据。我只想将标题添加文件中一次。只有来自表单的数据才会附加到我认为我拥有的下一行。请帮忙。

解决方法

File.CreateText 返回一个流编写器;你可以使用它,也可以趁机写header


string header = "Project Name,Project Build,Project SN\n";

// Write to CSV string path
try{
  StreamWriter sw;

  if (!File.Exists(path)) {
    sw = File.CreateText(path);
    sw.WriteLine(header);
  } else
    sw = File.AppendText(path);

  string projectName = ProjectName_TextBox.Text;
  string projetcBuild = ProjectBuild_TextBox.Text;
  string projectSN = SN_TextBox.Text;
 
  sw.WriteLine(projectName + "," + projetcBuild + "," + projectSN);
            
}
finally{
  sw.Dispose(); 
}

您不需要对字符串调用 ToString。您不需要在没有占位符的字符串上调用格式。您不应该真的费心编写自己的 csv 编写器;有很多很好的图书馆可以做到这一点。只要有人在其中一个文本框中输入逗号,这个简单的实现就会失败

,

您可以在使用 File.Exists(path) 添加标题之前检查文件是否存在。类似的东西

    string projectName = ProjectName_TextBox.Text;
    string projetcBuild = ProjectBuild_TextBox.Text;
    string projectSN = SN_TextBox.Text;
    string header = "Project Name,Project SN\n";

    var firstWrite = !File.Exists(path);
    using (StreamWriter sw = new StreamWriter(path,true)) // true for appending data to file,false to overwrite in file
    {
       if(firstWrite)
        sw.WriteLine(header);
        
       
        sw.WriteLine(string.Format(projectName + "," + projetcBuild.ToString() + "," + projectSN.ToString()));
        

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。