
Jak wyeksportować Datagridview do Excela w C#
Ten samouczek zapewnia wszechstronny przewodnik na temat eksportu danych z DataGridView kontrolki w aplikacji Windows Forms do pliku Excel przy użyciu biblioteki IronXL w C#. Skupimy się na stworzeniu bezproblemowego doświadczenia dla początkujących, którzy chcą zintegrować funkcjonalność Microsoft Excel ze swoimi projektami C#.
How to Export DataGridView to Excel in C#
- Utwórz projekt Windows Forms C# w Visual Studio.
- Zainstaluj bibliotekę Excel przy użyciu Menedżera Pakietów NuGet.
- Utwórz kontrolkę DataGridView i przycisk w interfejsie użytkownika Windows Form.
- Podepnij źródło danych do kontrolki DataGridView.
- Zastosuj logikę eksportu danych w obsłudze zdarzeń kliknięcia przycisku.
Pierwsze kroki z IronXL
IronXL to solidna biblioteka, która upraszcza proces pracy z dokumentami Excel w aplikacjach .NET Framework. Pozwala na eksportowanie dużych plików Excel, obsługę złożonych źródeł danych i zapewnia rozbudowane wsparcie dla manipulacji plikami Excel w .NET bez potrzeby posiadania biblioteki obiektów Microsoft Excel. Skonfigurujmy nasz projekt.
Konfiguracja projektu
1. Utwórz nową aplikację Windows Forms
Otwórz Visual Studio i stwórz nową aplikację Windows Forms. To będzie baza dla naszego projektu, w której zaimplementujemy funkcjonalność eksportu danych DataGridView do pliku Excel.

2. Zainstaluj IronXL
IronXL można łatwo dodać do projektu. W Visual Studio wejdź do opcji 'Zarządzaj pakietami NuGet', wyszukaj IronXL i zainstaluj. Ta akcja obsłuży wszystkie zależności wymagane do eksportu DataGridView do Excel w C#.

3. Przygotuj interfejs użytkownika
Dodaj kontrolkę DataGridView do formularza. Kontrolka ta będzie zawierać dane, które zamierzamy wyeksportować. Dodatkowo dodaj przycisk do uruchomienia procesu eksportu. Możesz oznaczyć go jako 'Eksportuj do Excel' lub coś podobnego.
Implementacja funkcjonalności eksportu
W tej sekcji nauczyliśmy, jak zaprogramować funkcjonalność, która pozwala na eksportowanie danych z DataGridView w aplikacji Windows Forms do dokumentu Excel przy użyciu IronXL.
Budowa aplikacji
Na początek trzeba dodać kontrolkę DataGridView do swojego formularza. Kontrolka ta jest głównym elementem, w którym dane zostaną wyświetlone przed eksportem. Można ją łatwo dodać przeciągając kontrolkę DataGridView z narzędzi w Visual Studio na formularz. Możemy również dodać przycisk do eksportowania danych z DataGridView do plików Excel.

Następnym krokiem jest załadowanie danych do kontrolki DataGridView. Te dane mogą pochodzić z różnych źródeł, takich jak DataTable lub DataSet. Jeśli dopiero zaczynasz, możesz stworzyć nowe DataSet lub DataTable programowo i wypełnić go przykładowymi danymi, aby zobaczyć, jak działa. Alternatywnie możesz zaimportować dane z zewnętrznego źródła. Kluczem tutaj jest powiązanie swojego źródła danych z kontrolką DataGridView, co skutecznie łączy twoje dane z siatką. Gdy dane zostaną powiązane z DataGridView, zobaczysz je wyświetlane w siatce na formularzu.
private void BindDataToDataGridView()
{
// Create a new DataTable.
DataTable dataTable = new DataTable();
// Define columns for the DataTable.
dataTable.Columns.Add("Employee ID", typeof(int));
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("Department", typeof(string));
dataTable.Columns.Add("Joining Date", typeof(DateTime));
// Add sample data to the DataTable.
for (int i = 1; i <= 25; i++)
{
dataTable.Rows.Add(i, "Employee " + i, "Department " + (i % 5 + 1), DateTime.Now.AddDays(-i * 15));
}
// Bind the DataTable to the DataGridView.
dataGridView1.DataSource = dataTable;
}Private Sub BindDataToDataGridView()
' Create a new DataTable.
Dim dataTable As New DataTable()
' Define columns for the DataTable.
dataTable.Columns.Add("Employee ID", GetType(Integer))
dataTable.Columns.Add("Name", GetType(String))
dataTable.Columns.Add("Department", GetType(String))
dataTable.Columns.Add("Joining Date", GetType(DateTime))
' Add sample data to the DataTable.
For i As Integer = 1 To 25
dataTable.Rows.Add(i, "Employee " & i, "Department " & (i Mod 5 + 1), DateTime.Now.AddDays(-i * 15))
Next i
' Bind the DataTable to the DataGridView.
dataGridView1.DataSource = dataTable
End SubObsługa zdarzenia kliknięcia przycisku
Naszym głównym punktem interakcji z użytkownikiem będzie przycisk w naszej aplikacji Windows Form. Ten przycisk, po kliknięciu, inicjuje proces eksportu. Oto, jak można ustawić tę interakcję:
- W swoim Windows Form powinieneś mieć przycisk dedykowany do eksportowania danych z DataGridView.
- Przycisk ten ma metodę obsługi zdarzeń w twoim kodzie C#. Metoda ta zostaje wywołana, gdy użytkownik kliknie przycisk.
private void btnExport_Click(object sender, EventArgs e)
{
// Code to export data will go here
}Private Sub btnExport_Click(ByVal sender As Object, ByVal e As EventArgs)
' Code to export data will go here
End SubEksport danych z DataGridView
Aby wyeksportować dane z DataGridView, najpierw musimy odwołać się do przestrzeni nazw IronXL:
using IronXL;Imports IronXLW ramach obsługi zdarzeń, pierwszy krok to inicjalizacja nowego skoroszytu i arkusza roboczego przy użyciu IronXL. To tutaj nasze dane z DataGridView zostaną przeniesione.
- Obiekt
WorkBookreprezentuje cały plik Excel. WorkSheetw skoroszycie jest jak pojedyncza strona lub zakładka w pliku Excel.
Tutaj tworzymy skoroszyt, a następnie dodajemy do niego arkusz roboczy. Arkusz roboczy nazywa się 'ExportedData', ale możesz wybrać dowolną nazwę pasującą do kontekstu aplikacji.
WorkBook workbook = WorkBook.Create();
WorkSheet worksheet = workbook.CreateWorkSheet("ExportedData");Dim workbook As WorkBook = WorkBook.Create()
Dim worksheet As WorkSheet = workbook.CreateWorkSheet("ExportedData")Uzupełnianie arkusza Excel
Następnym krokiem jest iterowanie przez wiersze i kolumny DataGridView i kopiowanie danych z każdej komórki do odpowiadającej komórki w arkuszu Excel.
- Zewnętrzna pętla postępuje przez każdy wiersz, podczas gdy wewnętrzna pętla przechodzi przez każdą kolumnę w danym wierszu.
- Przypisujemy każdą wartość komórki w DataGridView do odpowiadającej komórki w arkuszu Excel. Odbywa się to za pomocą indeksów
i(dla wierszy) ij(dla kolumn).
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
// Convert row and column index to Excel cell address format
string cellAddress = ConvertToCellAddress(i, j);
worksheet[cellAddress].Value = dataGridView1.Rows[i].Cells[j].Value.ToString();
}
}For i As Integer = 0 To dataGridView1.Rows.Count - 1
For j As Integer = 0 To dataGridView1.Columns.Count - 1
' Convert row and column index to Excel cell address format
Dim cellAddress As String = ConvertToCellAddress(i, j)
worksheet(cellAddress).Value = dataGridView1.Rows(i).Cells(j).Value.ToString()
Next j
Next iAby przekonwertować indeksy wierszy i kolumn do adresu komórki Excel, możesz użyć pomocniczej metody takiej jak ta:
private string ConvertToCellAddress(int row, int column)
{
// Columns in Excel are labeled as A, B, C, ..., Z, AA, AB, ..., etc.
// The following code converts a column index to this format.
string columnLabel = "";
while (column >= 0)
{
columnLabel = (char)('A' + column % 26) + columnLabel;
column = column / 26 - 1;
}
// Rows in Excel are labeled as 1, 2, 3, ..., n
// Adding 1 because Excel is 1-based and our loop is 0-based.
string rowLabel = (row + 1).ToString();
return columnLabel + rowLabel;
}Private Function ConvertToCellAddress(ByVal row As Integer, ByVal column As Integer) As String
' Columns in Excel are labeled as A, B, C, ..., Z, AA, AB, ..., etc.
' The following code converts a column index to this format.
Dim columnLabel As String = ""
Do While column >= 0
columnLabel = ChrW(AscW("A"c) + column Mod 26) & columnLabel
column = column \ 26 - 1
Loop
' Rows in Excel are labeled as 1, 2, 3, ..., n
' Adding 1 because Excel is 1-based and our loop is 0-based.
Dim rowLabel As String = (row + 1).ToString()
Return columnLabel & rowLabel
End FunctionZapisywanie pliku Excel
Gdy wszystkie dane zostaną przeniesione, następnym krokiem jest zapisanie tego skoroszytu jako pliku Excel. Ten krok tworzy plik Excel na twoim systemie w określonej ścieżce.
workbook.SaveAs("DataGridViewExport.xlsx");
MessageBox.Show("Data exported successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);workbook.SaveAs("DataGridViewExport.xlsx")
MessageBox.Show("Data exported successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information)Obsługa błędów
W każdym procesie eksportu danych obsługa wyjątków jest kluczowa dla zapewnienia stabilności aplikacji. Opakowanie logiki eksportu w blok try-catch zapewnia, że wszelkie problemy podczas eksportu (takie jak uprawnienia dostępu do plików, kwestie formatu danych, itp.) są wychwytywane i obsługiwane w elegancki sposób.
try
{
// Export logic
}
catch (Exception ex)
{
MessageBox.Show("An exception occurred: " + ex.Message);
}Try
' Export logic
Catch ex As Exception
MessageBox.Show("An exception occurred: " & ex.Message)
End TryWynik
Po uruchomieniu programu, ten interfejs się pojawi:

Tutaj możesz zobaczyć, że dane są wyświetlane w DataGridView. Teraz kliknij przycisk Eksportuj. To wyeksportuje dane z DataGridView do pliku Excel.

Tutaj możesz zobaczyć, że pojawia się okno komunikatu, a dane są eksportowane do pliku Excel. Oto wyjściowy plik Excel:

Wnioski
Stosując ten przewodnik, masz teraz podstawowe, ale potężne narzędzie do eksportowania danych z DataGridView do pliku Excel przy użyciu C# i IronXL. Ta funkcjonalność jest kluczowa dla aplikacji wymagających analizy danych, raportowania lub po prostu przenoszenia danych między różnymi formatami. Pamiętaj, że eksperymentowanie z różnymi funkcjami kontrolki DataGridView i biblioteki IronXL może prowadzić do bardziej dostosowanych i zaawansowanych wdrożeń.
IronXL oferuje bezpłatną wersję próbną, którą możesz wykorzystać do eksploracji jego funkcji. Licencjonowanie zaczyna się od $999, co jest wartościową inwestycją dla profesjonalistów i organizacji poszukujących niezawodnego i wydajnego rozwiązania do manipulacji plikami Excel w aplikacjach .NET.
Twoja podróż nie kończy się tutaj. Kontynuuj odkrywanie więcej funkcji IronXL i innych sposobów na ulepszenie swoich aplikacji Windows Forms. Miłego kodowania!

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.
Powiązane artykuły



