Przejdź do treści stopki
KORZYSTANIE Z IRONXL
Jak wyeksportować DataGridView do Excela w języku C#

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

  1. Utwórz projekt Windows Forms C# w Visual Studio.
  2. Zainstaluj bibliotekę Excel przy użyciu Menedżera Pakietów NuGet.
  3. Utwórz kontrolkę DataGridView i przycisk w interfejsie użytkownika Windows Form.
  4. Podepnij źródło danych do kontrolki DataGridView.
  5. 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.

Jak wyeksportować DataGridView do Excela w C#: Rysunek 1 - Tworzenie nowej aplikacji Windows Forms w Visual Studio

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#.

Jak wyeksportować DataGridView do Excela w C#: Rysunek 2 - Instalacja biblioteki IronXL za pomocą Menedżera pakietów NuGet

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.

Jak wyeksportować DataGridView do Excela w C#: Rysunek 3 - Dodawanie przycisku do eksportu danych DataGridView do pliku 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 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 Sub
$vbLabelText   $csharpLabel

Obsł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 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 Sub
$vbLabelText   $csharpLabel

Eksport danych z DataGridView

Aby wyeksportować dane z DataGridView, najpierw musimy odwołać się do przestrzeni nazw IronXL:

using IronXL;
using IronXL;
Imports IronXL
$vbLabelText   $csharpLabel

W 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 WorkBook reprezentuje cały plik Excel.
  • WorkSheet w 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");
WorkBook workbook = WorkBook.Create();
WorkSheet worksheet = workbook.CreateWorkSheet("ExportedData");
Dim workbook As WorkBook = WorkBook.Create()
Dim worksheet As WorkSheet = workbook.CreateWorkSheet("ExportedData")
$vbLabelText   $csharpLabel

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) i j (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 (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 i
$vbLabelText   $csharpLabel

Aby 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 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 Function
$vbLabelText   $csharpLabel

Zapisywanie 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);
workbook.SaveAs("DataGridViewExport.xlsx")
MessageBox.Show("Data exported successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information)
$vbLabelText   $csharpLabel

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 (Exception ex)
{
    MessageBox.Show("An exception occurred: " + ex.Message);
}
Try
	' Export logic
Catch ex As Exception
	MessageBox.Show("An exception occurred: " & ex.Message)
End Try
$vbLabelText   $csharpLabel

Wynik

Po uruchomieniu programu, ten interfejs się pojawi:

Jak wyeksportować DataGridView do Excela w C#: Rysunek 4 - Formularz wyjściowy poprzedniego kodu

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

Jak wyeksportować DataGridView do Excela w C#: Rysunek 5 - Komunikat o pomyślnym eksporcie

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

Jak wyeksportować DataGridView do Excela w C#: Rysunek 6 - Plik Excel wynikowy po wyeksportowaniu poprzedniego formularza

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 $liteLicense, 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!

Często Zadawane Pytania

Jak w języku C# wyeksportować dane z DataGridView do pliku Excel?

W języku C# można eksportować dane z DataGridView do pliku Excel przy użyciu biblioteki IronXL. Wymaga to utworzenia projektu Windows Forms, zainstalowania IronXL za pośrednictwem NuGet oraz zaimplementowania logiki przenoszenia danych z DataGridView do arkusza kalkulacyjnego Excel.

Jakie kroki należy wykonać, aby skonfigurować DataGridView do eksportu do programu Excel?

Kroki obejmują utworzenie widoku DataGridView w projekcie Windows Forms, powiązanie go ze źródłem danych, dodanie przycisku do formularza oraz napisanie logiki eksportu w procedurze obsługi zdarzenia kliknięcia przycisku przy użyciu biblioteki IronXL.

Jak zainstalować IronXL w projekcie Visual Studio?

Aby zainstalować IronXL w projekcie Visual Studio, przejdź do „Zarządzaj pakietami NuGet”, wyszukaj IronXL i zainstaluj go, aby obsłużyć wszystkie niezbędne zależności do eksportowania DataGridView do Excela.

Czy mogę eksportować duże pliki Excel za pomocą IronXL?

Tak, IronXL umożliwia eksport dużych plików Excel, zapewniając solidną funkcjonalność do obsługi rozległych zbiorów danych bez konieczności korzystania z biblioteki obiektów Microsoft Excel.

Jaka jest rola przycisku w samouczku dotyczącym eksportu z DataGridView?

Przycisk w samouczku uruchamia proces eksportu. Po kliknięciu uruchamia on logikę przenoszenia danych z DataGridView do pliku Excel przy użyciu biblioteki IronXL.

W jaki sposób IronXL obsługuje transfer danych z DataGridView do programu Excel?

IronXL ułatwia transfer danych poprzez iterację wierszy i kolumn DataGridView oraz kopiowanie danych z każdej komórki do odpowiednich komórek arkusza Excel.

Jak mogę zarządzać błędami podczas procesu eksportu za pomocą IronXL?

Możesz zarządzać błędami, umieszczając logikę eksportu w bloku try-catch, aby wychwytywać i obsługiwać wyjątki, zapewniając płynne działanie nawet w przypadku wystąpienia problemów, takich jak uprawnienia dostępu do plików.

Jak zapisać plik Excel po wyeksportowaniu danych z DataGridView?

Po przeniesieniu danych do arkusza Excel za pomocą IronXL można zapisać plik w systemie, korzystając z metody SaveAs biblioteki IronXL.

Czy dostępna jest bezpłatna wersja próbna IronXL do przetestowania jego funkcji?

Tak, IronXL oferuje bezpłatną wersję próbną, umożliwiającą użytkownikom zapoznanie się z jego funkcjami do manipulacji plikami Excel w aplikacjach .NET. Dostępne są licencje na dalszy rozwój.

Curtis Chau
Autor tekstów technicznych

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ę...

Czytaj więcej

Zespół wsparcia Iron

Jesteśmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwoń do mnie