IRONSOFTWAREHOME

Tworzenie plików Excel w języku C#

Tworzenie plików Excel w C#

Tim Corey

55m 42s

Tworzenie i zarządzanie plikami Excel to kluczowa umiejętność dla każdego programisty C# tworzącego narzędzia do raportowania, eksportu danych czy interfejsów do wprowadzania danych przez użytkownika. W tym artykułe szczegółowo omawiamy przewodnik przedstawiony przez Tima Coreya w jego filmie "Creating Excel files in C#", gdzie pokazuje on, jak utworzyć plik Excel przy użyciu C#, sformatować go, a nawet odczytać z niego dane — wszystko z wykorzystaniem biblioteki EPPlus.

Niezależnie od tego, czy chcesz utworzyć nowy skoroszyt Excel z List, sformatować komórki arkusza Excel, czy też odczytać strukturalne dane z powrotem do swojej aplikacji, przykład Tima służy jako praktyczny poradnik dotyczący podstaw generowania plików Excel w C#.

Rozbijmy to krok po kroku, odwołując się do filmu Tima.

Wprowadzenie: Dlaczego Używać Excela w C#?

Tim zaczyna od wyjaśnienia, że Microsoft Excel jest jednym z najważniejszych narzędzi w biznesie. Pliki Excel są przyjazne dla użytkownika, wysoce wszechstronne i idealne do prezentacji danych. Podkreśla, że tworzenie plików Excel w C# może być używane jako zamiennik dla skomplikowanych rozwiązań raportowania — czyniąc Excel domyślnym narzędziem raportującym.

Cel: stworzyć aplikację Excel używając C#, wypełnić ją danymi, zastosować formatowanie, a następnie odczytać dane z tego pliku Excel.

Konfiguracja projektu w Solution Explorer

Tim otwiera Visual Studio 2019, wybiera aplikację konsolową (.NET Core) i nazywa rozwiązanie ExcelDemoApp. Używanie aplikacji konsolowej zapewnia czyste i wolne od rozproszeń środowisko do skupienia się wyłącznie na kodzie związanym z Excel.

Aktualizuje środowisko docelowe do .NET 5.0, aby wykorzystać funkcje C# 9, takie jak uproszczona inicjalizacja obiektów.

Dodawanie EPPlus z paczek NuGet

Aby utworzyć skoroszyt Excel, Tim instaluje pakiet EPPlus za pośrednictwem Menedżera pakietów NuGet. EPPlus to biblioteka Excel, która współpracuje z plikami .xlsx (Open XML) i obsługuje pełną funkcjonalność Excel, taką jak wykresy, tabele, style i formuły — bez potrzeby instalowania MS Office lub Excel Interop.

Uwaga: EPPlus jest darmowy do użytku niekomercyjnego, ale wymaga licencji do zastosowań komercyjnych.

Kopiuje wymaganą linię akceptacji licencji niekomercyjnej do swojego kodu, aby uniknąć błędów wykonania, i dodaje niezbędną dyrektywę using OfficeOpenXml; dyrektywę.

Definiowanie ścieżki pliku Excel

Używając System.IO.FileInfo, Tim ustala zakodowaną na stałe ścieżkę pliku:

var file = new FileInfo(@"C:\demos\youtubedemo.xlsx");

Ten plik nie istnieje początkowo — zostanie stworzony dynamicznie przez program.

Tworzenie modelu danych

Aby wypełnić arkusz Excel, Tim definiuje prostą klasę PersonModel z następującymi właściwościami:

  • int Id

  • string Imie

  • string Nazwisko

Używa metody pomocniczej GetSetupData(), aby zwrócić List<PersonModel> wypełnioną przykładowymi danymi, takimi jak Tim Corey, Sue Storm i Jane Smith.

Asynchroniczne zapisywanie danych do pliku Excel

We współczesnym programowaniu blokowanie wątku UI jest niedopuszczalne. Dlatego Tim definiuje metodę asynchroniczną:

static async Task SaveExcelFile(List<PersonModel> people, FileInfo file)

Przed zapisem do Excel sprawdza, czy plik istnieje i usuwa go, aby uniknąć konfliktów nazw.

if (file.Exists) file.Delete();

Tworzenie i formatowanie arkusza Excel

Tim używa obiektu EPPlus ExcelPackage w bloku using, aby zapewnić właściwe zwolnienie zasobów:

using var package = new ExcelPackage(file);

Dodaje nowy arkusz do skoroszytu:

var ws = package.Workbook.Worksheets.Add("MainReport");

Ładowanie danych

Używając LoadFromCollection, wstawia listę osób od komórki "A2":

ws.Cells["A2"].LoadFromCollection(people, true);
  • true gwarantuje, że nagłówki są uwzględnione (na przykład "Id", "FirstName", "LastName").

Następnie AutoFitColumns() automatycznie dostosowuje szerokości kolumn:

ws.Cells[ws.Dimension.Address].AutoFitColumns();

W końcu zapisuje plik Excel:

await package.SaveAsync();

Formatowanie komórek i wierszy w Excel

Aby plik Excel był bardziej czytelny, Tim pokazuje, jak zastosować style:

Wiersz tytułu

ws.Cells["A1"].Value = "Our Cool Report";
ws.Cells["A1:C1"].Merge = true; ws.Row(1).Style.Font.Size = 24;
ws.Row(1).Style.Font.Color.SetColor(Color.Blue);
ws.Column(1).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;

Wiersz nagłówka

ws.Row(2).Style.Font.Bold = true;
ws.Row(2).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;

Niestandardowa szerokość kolumn

ws.Column(3).Width = 20;

Ta sekcja demonstruje zaawansowane formatowanie, takie jak:

  • Scałanie komórek

  • Stylizowanie czcionki

  • Kolory tła

  • Wyrównanie wierszy/kolumn

  • Dostosowania szerokości

Te funkcje naśladują typicalne funkcje formatowania MS Office Excel.

Odczytywanie Danych z Pliku Excela w C#

Teraz, gdy zapisaliśmy dane do Excel, czas je odczytać z powrotem do C#.

Tim przedstawia metodę:

static async Task<List<PersonModel>> LoadExcelFile(FileInfo file)

Ustawia liczniki wierszy i kolumn:

int row = 3; // Skip title and header rows int col = 1;

Pętla przez wiersze

Używając pętli while, sprawdza niepuste komórki i odczytuje wartości:

while (!string.IsNullOrWhiteSpace(ws.Cells[row, col].Value?.ToString()))

W pętli wartości są odczytywane i parsowane:

p.Id = int.Parse(ws.Cells[row, col].Value.ToString());
p.FirstName = ws.Cells[row, col + 1].Value.ToString();
p.LastName = ws.Cells[row, col + 2].Value.ToString();

Lista<List<PersonModel>> jest wypełniana i zwracana.

Weryfikacja zaimportowanych danych

Tim przechodzi przez zwróconą listę i zapisuje każdy wpis na konsolę:

foreach (var p in peopleFromExcel)
{
     Console.WriteLine($"{p.Id} {p.FirstName} {p.LastName}");
}

Aby zademonstrować elastyczność Excel jako narzędzia wejściowego dla użytkownika, Tim ręcznie dodaje nowe rekordy ("Bill Smith", "Mary White") bezpośrednio w pliku Excel. Po ponownym uruchomieniu aplikacji, wpisy te są importowane bez zmiany kodu — potwierdzając potencjał Excel jako interfejsu wprowadzania danych.

Praktyczne przypadki użycia

Tim podkreśla przypadki użycia rozwiązania Excel w C#:

  • Eksportowanie tabel bazy danych do Excel

  • Importowanie danych wprowadzonych przez użytkowników końcowych

  • Użycie Excel jako dashboardu raportującego

  • Tworzenie strukturalnych skoroszytów do przetwarzania danych

I wszystko to bez polegania na Microsoft.Office.Interop.Excel, który wymaga zainstalowanego Excel.

Ostatnie uwagi na temat EPPlus i plików Excel

Tim wyjaśnia, że pliki .xlsx utworzone programatycznie nie zawierają pełnych metadanych, dopóki nie zostaną otwarte i zapisane w Excel. Dlatego rozmiar pliku rośnie po jego otwarciu w prawdziwej aplikacji Excel.

Zauważa również, że EPPlus to dopracowana, solidna biblioteka z obsługą dla:

  • Wykresów

  • Obrazów

  • Mikrowykresów

  • Formuł

  • Ustawień stron

  • Obramowań

  • Formatowania komórek

Wnioski

Tworzenie plików Excel w C# nie musi być trudne ani kosztowne. Dzięki bibliotece Excel EPPlus, programiści mogą tworzyć dokumenty Excel pełne funkcji programatycznie bez potrzeby korzystania z MS Office. Jak pokazuje Tim Corey, zaledwie kilkoma liniami kodu możesz:

  • Stworzyć plik Excel

  • Wypełniać wiersze i kolumny

  • Zastosować stylizowanie

  • Odczytywać dane z powrotem

  • Zastosować Excel jako interfejs użytkownika

Czyni to fantastycznym wyborem dla lekkich narzędzi raportujących, importu/eksportu danych lub po prostu dostarczenia użytkownikom znanego im interfejsu.

Więc następnym razem, gdy tworzysz projekt i musisz wyprowadzić lub zużywać dane Excel, spróbuj wdrożyć przykładowy kod z filmu Tima Coreya film — i wprowadź siłę Excel do swoich aplikacji .NET Framework lub .NET Core.

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Otrzymaj swoją Konsultację Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta