在C#中输出和输入CSV文件 [英] Outputing And Inputing CSV Files In C#

查看:60
本文介绍了在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.
更好的是,使用正确的组合或WriteWriteLine.由于仅使用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 "" use string.Empty. Close file in the finally section of try-catch-finally block. Never use "\r\n", use portable System.Environment.NewLine.
Even better, use correct combination or Write and WriteLine. You console input is ugly due to using only WriteLine


As I understand from your comment, you wanted to append new data to the same file.
In this case, you should add boolean parameter append to the constructor of StreamWriter: 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆