Import, eksport, edycja plików CSV

Ostatnio dostałem bardzo ciekawego maila z prośbą o pomoc przy tworzeniu pewnej aplikacji.

Witam Panie Piotrze.

Generalnie uczę się VBA, z książki internetu. Korzystam czasami też z pomocy kolegów z pracy. W poszukiwaniu różnych kodów i rozwiązań trafiłem między innymi na Pana stronę.
Szukam/modyfikuję/tworzę program który:
1. zaimportuje plik CSV lub XLS do VB.  Plik ma 47 na 334 linie (jak Pan chce to mogę podesłać). Tu prawie się udało, prawie bo niestety dane importuje mi tylko w ostatniej linii.
2. pokaże tabele DataGridView. W tabeli VB robie drobne zmiany czas, data.Tu można powiedzieć, że działa.
3. utworzy mi plik CSV. I tu okazuje sie jest spory problem, żeby zrobić prawdziwą CSV. Taką, żeby można było zobaczyć to w np ++Notepad
W Pana programie mi coś po prostu nie hula 🙂
Zagadnie zrobiło się dość skomplikowane jak dla mnie przynajmniej.
Żeby nie być gołosłownym w załączniku mój klucz/kod (nie wiem jak to nazwać).
Dlaczego uparłem się na CSV. Bo mam w pracy program który potrzebuje CSV tylko i wyłącznie. Dlaczeg VB – żeby to uprościć.
Mam nadzieje, że napisałem w miarę zrozumiale…

Pliki *.CSV to bardzo prosta i elastyczna forma przechowywania informacji. Forma ta charakteryzuje się dużą elastycznością, łatwą edycją i jasną strukturą. Jeśli chcielibyśmy otworzyć plik *.CSV przy pomocy LibreOffica/Excela musielibyśmy najpierw określić jego strukturę:

Wybór separatora jest najważniejszym elementem całego pliku *.CSV, to on oddziela dane od siebie i określa jednocześnie ilość kolumn. Wiersze oddzielone są zawsze za pomocą nowej linii (enter, vbNewLine). Plik poniżej przedstawia takie dane:

Do pobrania tutaj: Dane_Giełdowe

Pierwszy wiersz to nazwy kolumn, a reszta to dane. Często jest tak, że eksportując dane do pliku CSV, nie będziemy mieli tej pierwszej linii lub możemy mieć kilka linii określających kolumny, jak numeracja i nazwa. Tworzymy formę tak jak na obrazku poniżej:

 
Rodzaj elementu Nazwa elementu Ustawienia
Form Form1 Name: Form1
Text: Import/Eksport CSV
Size: 639; 482
DataGridView DataGridView1  Size: 598; 389

Location: 13; 42

Anchor: Top, Bottom, Left, Right

Button Button1 Size: 133; 23

Name: Button1
Text: Pobierz dane CSV
Location: 13;13

Button Button2 Size: 133; 23

Name: Button2
Text: Zapisz dane w CSV
Location: 478; 13

Zaczniemy od wyboru pliku CSV i stworzeniu zestawu danych, które umieścimy w naszym DatagridView, tworzymy uchwyt dla przycisku ładującego dane „Pobierz dane CSV”:

Nasza Aplikacja nic jeszcze nie robi, ale można już zacząć wybierać dane. Zapiszcie sobie plik Dane_Giełdowe w jakimś znanym miejscu i odblokujcie funkcje:

Funkcja ta ma za zadanie pobrać dane ze wskazanego pliku i przy użyciu wpisanego separatora sformatować dane:

Nasz program już pobiera i wyświetla dane:

Krótki kod a efekt bardzo zadowalający. Oczywiście, jeśli któryś wiersz będzie miał złą ilość kolumn, lub wpiszemy zły separator, możemy otrzymać błąd. Teraz gdy dane wyświetliły się w programie, możemy dokonać ich edycji lub zamiany. Ja posiadam taką aplikację, która zamienia mi wartości w kolumnia4 z 0 na 101, jeśli godzina jest większy lub równy 15:00 a wartość jest 0, jeśli takie są, podświetla na czerwono komórkę w pierwszej kolumnie, wskazując, że w tym wierszu nastąpiła zmiana:

Ostatni element to zapisywanie danych w formacie CSV. Tutaj zrobimy sobie dwa sposoby, jeden będzie zapisywał wszystkie elementy DataGridView a drugi, będzie korzystał z DataSet. Tworzymy uchwyt do drugiego przycisku:

Kod dla daneDoCSV() wygląda następująco:

Kod robiący dokładnie to samo przy użyciu DataSet wygląda następująco:

To by było na tyle. Pełen projekt do pobrania tutaj: ImportCSV

 

Permalink do tego artykułu: https://visualmonsters.cba.pl/eksport-edycja-plikow/

Dodaj komentarz

Twój adres email nie będzie publikowany.