【发布时间】:2014-07-23 08:38:01
【问题描述】:
我有 7 个文本框,我想将它们的值写入 csv 文件。另外,我想为这些信息写一个标签。最终的 csv 文件应如下所示:
label1----label2----label3----label7
value1----value2----value3----value7
这是我的代码:
public void CreatingCsvFiles()
{
string filePath = "C:\\Users\\User\\Desktop\\project2\\" + "filename.csv";
if (!File.Exists(filePath))
{
File.Create(filePath).Close();
}
string delimiter = ",";
string[][] output = new string[][]{
new string[]{this.labels}
};
int length = output.GetLength(0);
StringBuilder sb = new StringBuilder();
for (int index = 0; index < length; index++)
sb.AppendLine(string.Join(delimiter, output[index]));
File.AppendAllText(filePath, sb.ToString());
}
如你所见,我使用了new string[] {this.labels}
其中 this.labels 是 csv 格式 字符串。
一切正常,但问题是我不知道谁将this.values 写入同一个 csv 文件。
其中this.values 是csv 格式 字符串。
【问题讨论】:
-
嗯?当然,您只是在进入循环之前写下标签... p.s.尝试使用 StyleCop
-
不确定为什么要使用输出数组。您可以将
this.labels和this.values一个接一个地直接添加到StringBuilder 中吗?或者甚至直接将它们写入文件,而不使用 StringBuilder? -
Pau:我试图创建一个循环,但只是打印在 csv 文件上的最后一个值
-
Mike:我不知道 StringBuilder 是做什么用的,我在 Internet 页面上找到了该代码。如果您知道更好的解决方案,请告诉我。谢谢
-
正在输入与 Mike 类似的评论。如果 this.labels 已经是一个字符串数组(这是真的吗?),那么您不需要创建一个新的输出字符串数组。直接用就行了。此外,您不需要为附加/检查现有文件执行任何复杂的逻辑。只需致电
File.Open(filePath, FileMode.Append)。如果文件存在,这将自动附加,如果不存在,则创建一个新文件。不要像在您的代码中那样立即关闭文件。使用来自File.Open的返回值写入您的文件。