如何解决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 举报,一经查实,本站将立刻删除。