在C#中输出和输入CSV文件 [英] Outputing And Inputing CSV Files In C#
本文介绍了在C#中输出和输入CSV文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
大家好,
我正在编写一个分配,以将用户输入的某些数据保存到CSV文件中.每次我运行该程序时,我似乎都会丢失以前保存的数据.如果您能建议我应采取的路线.
谢谢
Hi Guys,
I am writing an assignment to save some data that the user enters into a CSV file. Every time I run the program I seem to loose the data that was previously saved. If you could advise me on what route I should take.
Thanks
using System;
using System.IO;
using System.Collections.Generic;
namespace FileAccess
{
class MainClass
{
public static void Main(string[] args)
{
string FName;
string LName;
string Dpt;
string Grade;
string NumberOfHours;
string file_name = "EmployeeDetails.txt";
string tLine = string.Empty;
System.IO.StreamWriter objWriter;
objWriter = new System.IO.StreamWriter(file_name);
String[] ArrayDetails = new string[5];
Console.Write("Enter Emp First Name: ");
FName=Console.ReadLine();
Console.Write("Enter Emp Last Name: ");
LName = Console.ReadLine();
Console.Write("Enter Emp Department: ");
Dpt = Console.ReadLine();
Console.Write("Enter Employee Grade: ");
Grade = Console.ReadLine();
Console.Write("Enter Number Of Hours Worked: ");
NumberOfHours = Console.ReadLine();
ArrayDetails[0] = FName;
ArrayDetails[1] = LName;
ArrayDetails[2] = Dpt;
ArrayDetails[3] = Grade;
ArrayDetails[4] = NumberOfHours;
List<string> LDetails = new List<string>(); // Create new list of strings
LDetails.Add(FName); // Add string 1
LDetails.Add(LName); // 2
LDetails.Add(Dpt); // 3
LDetails.Add(Grade); // 4
LDetails.Add(NumberOfHours); // 5
string LDetailsCSV = string.Join(",", LDetails.ToArray());
Console.WriteLine(LDetailsCSV);
objWriter.Write(LDetailsCSV);
objWriter.Close();
}
}
}
推荐答案
您是指CSV(逗号分隔值)吗?
这段代码中没有什么应该失败的,但是看起来您并不是在尝试编写CSV文件,而是写了一条CSV行.代码很糟糕.您可以使用立即数对所有内容进行硬编码.取5的常数.还有更多的组件吗?为什么要包含5个值+ 5个单独的命名变量的数组.不要重复自己(D.R.Y.)您读取变量,然后无论如何都要将值放在数组中.代替"使用string.Empty
.关闭try
-catch
-finally
块的finally部分中的文件.永远不要使用"\r\n
",请使用便携式System.Environment.NewLine
.
更好的是,使用正确的组合或Write
和WriteLine
.由于仅使用WriteLine
…
,因此控制台输入很难看
据您的评论所知,您想将新数据附加到同一文件中.
在这种情况下,应将布尔参数append
添加到StreamWriter
的构造函数中: http://msdn.microsoft.com/en-us/library/36b035cb.aspx [ ^ ].
(这很不好;如果您是新手,请在使用现有类之前阅读帮助.
请不要生气,改进您的方法,这应该会对您有所帮助.)
—SA
Did you mean CSV (Comma-separated Values)?
There is nothing in this code which should fail, but it does not look like you''re trying to write a CSV file, it writes a single CSV line. The code is pretty bad. You hard-code everything using immediate constants. Take the constant of 5. What is there are more components? Why array of 5 values + 5 separate named variables. Do not Repeat Yourself (D.R.Y.). You read the variable and later put values in the array anyway. Instead of "" usestring.Empty
. Close file in the finally section oftry
-catch
-finally
block. Never use "\r\n
", use portableSystem.Environment.NewLine
.
Even better, use correct combination orWrite
andWriteLine
. You console input is ugly due to using onlyWriteLine
…
As I understand from your comment, you wanted to append new data to the same file.
In this case, you should add boolean parameterappend
to the constructor ofStreamWriter
: http://msdn.microsoft.com/en-us/library/36b035cb.aspx[^].
(This is kind of bad; it you are a beginner, read help before using an existing class.
Please don''t get offended, improve your approach, which should help you.)
—SA
这篇关于在C#中输出和输入CSV文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文