C# Program do obróbki danych z pliku .csv

0

Witam, Proszę o pomoc w znalezieniu koncepcji bądź Pomocy w napisaniu kodu.
Muszę napisać program do obróbki pliku .csv a mianowicie napisałem już kilka linii kodu dzięki czemu zaimportowałem dane z pliku .csv załadowałem do podglądu w datagridview usunąłem wiersze gdzie było puste pola w kolumnie nazwisko usunąłem zbędne kolumny . Ale mam problem z koncepcją jak wyciągnąć z tabeli 1 wiersz który ma tę samą datę i użytkownika i ostatni wiersz a te pośrodkowe usunąć potem od tego ostatniego pobrać godzinę i od 1 odjąć je żeby wyszło nam ile godzin minęło od 1 zdarzenia do ostatniego Kod jaki mam

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


namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

            DataGridView dgv = new DataGridView();
            DataTable dtt = new DataTable();
            this.Size = new Size(1200, 700);
            dgv.Size = new Size(1200, 700);
            this.Controls.Add(dgv);
            String[] datatext = File.ReadAllLines("mojplik.csv");
            String[] text_data = null;
            int x = 0;
            foreach (string csvrow in datatext)
            {
                text_data = csvrow.Split(';');

                if (x == 0)
                {
                    for (int i = 0; i <= text_data.Count() - 1; i++)
                    {
                        dtt.Columns.Add(text_data[i]);


                    }
                }
                else
                {
                    DataRow dtr = dtt.NewRow();
                    dtr.ItemArray = text_data;
                    dtt.Rows.Add(dtr);

                }
                x++;
            }
            dgv.DataSource = dtt;
            dgv.Columns.Remove("Pusto");
            dgv.Columns.Remove("Cholera Wie");
            dgv.Columns.Remove("Cholera Wie1");
            dgv.Columns.Remove("Cholera Wie2");
            dgv.Columns.Remove("Cholera Wie4");
            dgv.Columns.Remove("Cholera Wie5");
            dgv.Columns.Remove("Cholera Wie6");
            dgv.Columns.Remove("Cholera Wie10");
            int j = 0;

            // foreach(DataGridViewRow dr in dgv.Rows)
            //   {
            // for(int i=0;i< (dgv.RowCount-1);i++){

            //   if (dr.Rows[i].Cells[i].Value == null )
            //      dgv.Rows[j].RemoveAt(i);
            // }
            //  }
            for (int i = dgv.Rows.Count - 1; i >= 0; i--)
            {
                DataGridViewRow dataGridViewRow = dgv.Rows[i];

                foreach (DataGridViewCell cell in dataGridViewRow.Cells)
                {
                    string val = cell.Value as string;
                    if (string.IsNullOrEmpty(val))
                    {
                        if (!dataGridViewRow.IsNewRow)
                        {
                            dgv.Rows.Remove(dataGridViewRow);
                            break;
                        }
                    }
                }
            }

        }
    }       
    }
        
        
    

Image and video hosting by TinyPic

1

Moze zamiast DataGrid uzyj ListView i wykonuj operacje na LisViewItem(s).

2
  1. Utwórz sobie klasę reprezentującą wiersz pliku.
  2. Wczytaj dane z pliku do listy obiektów tej klasy.
  3. Przeprowadź operacje na obiektach w kolekcji.
  4. Wyświetl je w datagridview czy czym tam chcesz.

Kontrolki GUI nie służą do przetwarzania danych.

0

Ok rzeczywiście może będzie łatwiej spróbuję dzięki za pomysły :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1