Import danych z Excela do DataGridView, zapis do Excela

Przedstawię wam sposób na import danych z Excela do DataGridview i eksport danych do pliku Excel. Dany system można wykorzystać dwojako, ja wykorzystałem taki system do importu danych z Excela, następnie ich obróbkę i zapis do bazy danych.

Nasza aplikacja będzie miała możliwość pobierania danych, wyświetlania ich w DataGridView, będziemy mogli poddać dane specjalnej obróbce, a następnie zapisać je w pliku Excel. Wykorzystamy do tego dwie formy, pierwsza będzie głównym oknem naszego programu, druga będzie wyświetlała dostępne arkusze pliku. Aplikacja wykorzystuje bibliotekę ”Microsoft.Office.Interop.Excel”

Którą znajdzie każdy, kto ma zainstalowanego Office. Jeśli nie masz Office i korzystacie z darmowych odpowiedników jak LibreOffice lub OpenOffice nie przejmuj się, musicie doinstalować sobie składnik:

Microsoft Access Database Engine 2016

Gdy go dodamy, będziemy mogli wybrać potrzebny składnik z listy COM:

Zaczniemy standardowo od tabeli elementów:

 

Element type Element name Properties
Form Form1 Name: Form1
Size: 983; 663
StartPosition: CenterScreen
DataGridView ExcelView Name: ExcelView
Size: 932; 504
Location: 16; 64
Anchor: Top, Bottom, Left, Right
Button ChooseFile Name: ChooseFile
Size: 324; 28
Location: 16; 16
Text: Wybierz plik
Button FormatData Name: FormatData
Size: 324; 28
Location: 348; 16
Text: Formatuj dane
Button SaveExcelFile Name: SaveExcelFile
Size: 268; 28
Location: 680; 16
Text: Zapisz plik Excel
ProgressBar SavingProgress Name: SavingProgress
Size: 932; 504
Location: 16; 64
Anchor: Bottom, Left, Right
OpenFileDialog fileDialog Name: fileDialog
BackgroundWorker SaveExcelBackgroundWorker Name: SaveExcelBackgroundWorker
SaveFileDialog SaveExcelDialog Name: SaveExcelDialog

Forma, w której wybierzemy arkusz, z którego pobierzemy dane:

 

Element type Element name Properties
Form Form2 Name: Form2
Size: 411; 356
StartPosition: CenterScreen
ListBox SheetsListBox Name: SheetsListBox
Size: 361; 228
Location: 15; 16
Anchor: Top, Bottom, Left, Right
Button ExcelView Name: ExcelView
Size: 932; 504
Location: 16; 64
Anchor: Top, Bottom, Left, Right

Zanim zaczniemy omówienie naszej aplikacji, najpierw musimy przygotować sobie class’ę odpowiedzialną za obsługę CheckBox’ów w nagłówkach kolumn. Nie będziemy się skupiać na tym elemencie, gdyż już był on omawiany tutaj: numerowanie-dodawanie-columnheader

dodajemy class’ę 'ColumnsHeaderCheckbox’  wraz z kodem:

Mamy już przygotowaną formę, zaczniemy od wczytania naszego pliku.

Teraz możemy pobrać nasz plik, nic się jednak chwilowo nie stanie, potrzebujemy zdefiniować jeszcze prostą metodę wyboru arkusza w Form2:

Musimy teraz zdefiniować publiczną metodę w Form1 która na podstawie wybranego arkusza pobierze jego dane i wyświetli w DataGridView:

Nasza aplikacja będzie zachowywać się tak, jak tego oczekujemy, pobierze dane z wybranego arkusza i załaduje je do DataGridView:

Teraz zajmiemy się naszym przyciskiem „Formatuj dane”, często jest tak, że po zaimportowaniu danych zauważamy wiele pustych wierszy lub kolumn. Wiąże się to z tym, że nie wszystkie transformacje wykonane w Excelu będą wyglądały jednakowo w DataGridView na przykład łączenie komórek.

efekt będzie następujący:

Teraz dodamy sobie ostatni element i zrobimy to z klasą 😛

Efekt poniżej:

Teraz możemy edytować i zapisywać nasze pliki Excel 🙂

Repo do pobrania na GithHubie: https://github.com/VisualMonsters/WorkingWithExcel

Permalink do tego artykułu: https://visualmonsters.cba.pl/import-excela-datagridview/

1 komentarz

    • Piotr Konefał on 28 maja 2019 at 22:23
    • Odpowiedz

    Fajna stronka. Też chciałem właśnie taką zrobić w podobnym celu (przypominajki dla siebie i przy okazji dla kogoś), ale wieczny brak czasu nie pozwala. Pozdrawiam i wytrwałości życzę! Dzięki za materiał z bitmapami

Dodaj komentarz

Twój adres email nie będzie publikowany.