OfficialSub0 Ответов: 2

Как вы реализуете формат CSV?


Я создал форму windows для приложения ввода данных сотрудников. Я просто совсем не уверен в том, как использовать формат CSV, чтобы у каждого сотрудника была своя строка в текстовом файле, в который он будет сохранен.

Спасибо!

Что я уже пробовал:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Input;
using System.Text.RegularExpressions;


namespace EmployeeInfo
{
    public partial class EmployeeInfo : Form
    {
        public object reader { get; private set; }

        public EmployeeInfo()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            using (StreamWriter objWriter = new StreamWriter("EmployeeData.txt"))
            {
                objWriter.Write(FnameBox.Text);
                objWriter.Write(LnameBox.Text);               
                objWriter.Write(addressBox.Text);              
                objWriter.Write(stateBox.Text);
                objWriter.Write(cityBox.Text);
                objWriter.Write(zipCodeBox.Text);
                objWriter.Write(phoneBox.Text);                
                objWriter.Write(emailBox.Text);
                
                if (FnameBox.Text == "" || LnameBox.Text == "" || addressBox.Text == "" || stateBox.Text == "" || cityBox.Text == "" || zipCodeBox.Text == "" || phoneBox.Text == "" || emailBox.Text == "")
                {
                    // display popup box
                    MessageBox.Show("All fields must be completed", "Error");
                    FnameBox.Focus(); // set focus to lastNameTextBox
                    return;
                } // end if 

                if (!Regex.Match(FnameBox.Text, "^[A-Z][a-zA-Z]*$").Success)
                {
                    // first name was incorrect
                    MessageBox.Show("Please input valid first name", "Message");
                    FnameBox.Focus();
                    return;              
                }
                if (!Regex.Match(LnameBox.Text, "^[A-Z][a-zA-Z]*$").Success)
                {
                    // last name was incorrect
                    MessageBox.Show("Please input valid last name", "Message");
                    LnameBox.Focus();
                    return;
                }// end if          
                 // if address format invalid show message
                if (!Regex.Match(addressBox.Text, @"^[0-9]+\s+([a-zA-Z]+|[a-zA-Z]+\s[a-zA-Z]+)$").Success)
                {
                    // address was incorrect
                    MessageBox.Show("Please input valid address", "Message");
                    addressBox.Focus();
                    return;
                } // end if 
                if (!Regex.Match(stateBox.Text, @"^([a-zA-Z]+|[a-zA-Z]+\s[a-zA-Z]+)$").Success)
                {
                    // city was incorrect
                    MessageBox.Show("Please input valid state", "Message");
                    stateBox.Focus();
                    return;
                }// end if 
                 // if state format invalid show message
                if (!Regex.Match(cityBox.Text, @"^([a-zA-Z]+|[a-zA-Z]+\s[a-zA-Z]+)$").Success)
                {
                    // state was incorrect
                    MessageBox.Show("Please input valid city", "Message");
                    cityBox.Focus();
                    return;
                } // end if 
                  // if zip code format invalid show message
                if (!Regex.Match(zipCodeBox.Text, @"^\d{5}$").Success)
                {
                    // zip was incorrect
                    MessageBox.Show("Please input valid zip code", "Message");
                    zipCodeBox.Focus();
                    return;
                } // end if
                  // if phone number format invalid show message
                if (!Regex.Match(phoneBox.Text, @"^[1-9]\d{2}-[1-9]\d{2}-\d{4}$").Success)
                {
                    // phone number was incorrect
                    MessageBox.Show("Please input valid phone number", "Message");
                    phoneBox.Focus();
                    return;
                }// end if 
                if (!Regex.Match(emailBox.Text, @"^([a-zA-Z]+|[a-zA-Z]+\s[a-zA-Z]+)$").Success)
                {
                    // phone number was incorrect
                    MessageBox.Show("Please input valid email", "Message");
                    emailBox.Focus();
                    return;
                }// end if 
            }
            this.Hide(); // hide main window while MessageBox displays
            MessageBox.Show("The Information Entered \\nIs Valid and Saved");
        }

        private void button2_Click(object sender, EventArgs e)
        {          
            FnameBox.Text = "";
            LnameBox.Text = "";
            addressBox.Text = "";
            stateBox.Text = "";
            cityBox.Text = "";
            zipCodeBox.Text = "";
            phoneBox.Text = "";
            emailBox.Text = "";
        }
    }
 }

2 Ответов

Рейтинг:
11

Dave Kreskowiak

CSV расшифровывается как "значения, разделенные запятыми". Это просто текстовый файл с одной записью на строку, каждая запись имеет точно такой же формат, ни одно поле не является необязательным.

Текстовые (строковые) поля обычно заключаются в двойные кавычки ("что-то").

Запятая или другой делимер, например символ табуляции, разделяет значения полей.

"Some field value",10,102.45,"Something else",20312


Вот и вся недолга.


OfficialSub0

Спасибо, теперь я все понял! Вы случайно не знаете, почему текстовый файл не сохраняет ранее введенную информацию о сотруднике?

Рейтинг:
0

RickZeeland

Есть также CSV-библиотеки, которые вы можете использовать, все может усложниться с кавычками и символами новой строки.
Вместо CSV вы также можете взглянуть на XML, это гораздо проще использовать в C#.
Вот пример [^]
Я бы рекомендовал создать список "сотрудник" класса "сотрудник" и сериализовать его в XML.
Затем этот список можно использовать в качестве источника привязки, например, для DataGridView.
Смотрите эту замечательную статью: Подробное Руководство По Привязке Данных[^]