IRONSOFTWAREHOME
KORZYSTANIE Z IRONXL

Pobierz plik Excel w ASP .NET C#: Eksportuj dane do XLSX, CSV i innych formatów

Curtis Chau
Curtis Chau
Updated: 19 lipca 2026

Implementacja funkcjonalności eksportu arkusza kalkulacyjnego jest powszechnym wymaganiem dla aplikacji internetowych klasy korporacyjnej, ale ręczy proces generowania i dostarczania tych plików często wprowadza znaczną złożoność techniczną. Programiści muszą często nawigować po niuansach zarządzania MemoryStream i konfigurować precyzyjne nagłówki treści HTTP, aby zapewnić spójne zachowanie przeglądarki i zapobiec korupcji danych.

Ten artykuł przeprowadza przez wszystko, co potrzebne do utworzenia i pobrania plików Excel w kontrolerach MVC ASP .NET C# przy użyciu biblioteki IronXL Omówimy eksport danych do prawdziwych plików Excel w formacie XLSX, strumieniowe przesyłanie plików CSV, konwertowanie przesłanych plików do ponownego eksportu i zwracanie pobrań plików do przeglądarki, wszystko bez instalowania Microsoft Office lub polegania na Excel Interop. Zainstaluj pakiet NuGet IronXL i rozpocznij bezpłatny okres próbny, aby śledzić przykłady kodu źródłowego.

NuGetZainstaluj za pomocą NuGet

PM > Install-Package IronXL.Excel

Install IronXL by running the command above in the NuGet Package Manager Console, or search for the package in the NuGet Package Manager.

Jak utworzyć i pobrać plik Excel z kontrolera?

Podstawowy wzorzec dla scenariusza pobierania plików Excel w ASP.NET Core obejmuje trzy kroki: utwórz skoroszyt, zapisz go do strumienia i zwróć strumień jako odpowiedź z plikiem. Poniższy kod pokazuje kompletną akcję kontrolera MVC, która tworzy plikXLSXod zera i pcha go do przeglądarki.

using IronXL;
using Microsoft.AspNetCore.Mvc;
public class ReportController : Controller
{
    // Export employee data as a downloadable Excel file
    public IActionResult DownloadExcel()
    {
        // Create a new workbook and worksheet
        var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        var worksheet = workbook.CreateWorkSheet("Employees");
        // Add header row with column names
        worksheet["A1"].Value = "Name";
        worksheet["B1"].Value = "Department";
        worksheet["C1"].Value = "Salary";
        // Populate cells with data values
        worksheet["A2"].Value = "Alice Torres";
        worksheet["B2"].Value = "Engineering";
        worksheet["C2"].Value = 95000;
        worksheet["A3"].Value = "James Park";
        worksheet["B3"].Value = "Marketing";
        worksheet["C3"].Value = 78000;
        // Export workbook to a MemoryStream for download
        var stream = workbook.ToStream();
        string filename = "Employees.xlsx";
        var content = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
        // Return file to the browser with content disposition attachment
        return File(stream, content, filename);
    }
}

Plik wyjściowy w formacie Excel

Pobierz plik Excel w ASP .NET C#: Eksport danych do XLSX,CSVi innych: Obraz 1 - przykład wyjściowy dla pobierania pliku Excel w ASP .NET C#

Metoda WorkBook.Create generuje nowy dokument Excel, a CreateWorkSheet dodaje pierwszy arkusz do niego. Po wypełnieniu komórek wartościami metoda ToStream konwertuje cały skoroszyt na MemoryStream, żadne pliki tymczasowe nie dotykają dysku. Metoda zwracania File() na kontrolerze ustawia nagłówek content disposition na załącznik, co mówi przeglądarce, aby pobrać plik, zamiast próbować go renderować. Trzeci parametr kontroluje, jak nazwa pliku wygląda w oknie dialogowym pobierania użytkownika.

Ten wzorzec public IActionResult działa zarówno w projektach .NET Framework, jak i ASP.NET Core, co czyni go najlepszym podejściem dla aplikacji internetowych, które muszą eksportować dane do Excela.

Jak eksportować dane z bazy danych do arkusza kalkulacyjnego do pobrania?

Większość realnych scenariuszy obejmuje eksportowanie danych z tabeli bazy danych, a nie zakodowanych wartości. Wzorzec pozostałe ten sam: zapytaj dane, wypełnij arkusze i zwróć plik. Oto przykład, który symuluje pobieranie rekordów z bazy danych i zapisywanie ich do dokumentu Excel.

using IronXL;
using Microsoft.AspNetCore.Mvc;
public class DataExportController : Controller
{
    // Export database records to an xlsx file for download
    public IActionResult ExportDatabaseReport()
    {
        // Simulate a database query returning order records
        var orders = new[]
        {
            new { OrderId = 1001, Customer = "Acme Corp", Total = 4500.00m },
            new { OrderId = 1002, Customer = "Globex Inc", Total = 12300.50m },
            new { OrderId = 1003, Customer = "Initech LLC", Total = 890.75m },
        };
        var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        var worksheet = workbook.CreateWorkSheet("Orders");
        // Write headers
        worksheet["A1"].Value = "Order ID";
        worksheet["B1"].Value = "Customer";
        worksheet["C1"].Value = "Total";
        // Write each row of data from the query results
        for (int i = 0; i < orders.Length; i++)
        {
            int row = i + 2;
            worksheet[$"A{row}"].Value = orders[i].OrderId;
            worksheet[$"B{row}"].Value = orders[i].Customer;
            worksheet[$"C{row}"].Value = orders[i].Total;
        }
        var stream = workbook.ToStream();
        string filename = $"OrderReport-{DateTime.Now:yyyyMMdd}.xlsx";
        return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename);
    }
}

Wynik

Pobierz plik Excel w ASP .NET C#: Eksport danych do XLSX,CSVi innych: Obraz 2 - wynik eksportowania danych z bazy danych do pliku Excel

W produkcji tablica zamówień pochodziłaby z zapytania Entity Framework Core, wywołania Dapper lub dowolnej warstwy dostępu do danych podłączonej poprzez ciąg połączenia do bazy danych. Pętla iteruje przez wyniki i zapisuje każdą wartość do odpowiednich komórek na arkuszu. Zauważ, jak nazwa pliku w ciągu znaków zawiera znacznik daty, mały szczegół, który oszczędza problemów, gdy użytkownicy wielokrotnie pobierają pliki.

System adresowania komórek IronXL'a (arkusz[$"A{row}"]) umożliwia czytelność, a API WorkBook zajmuje się całą trudnością budowania poprawnego plikuXLSXwewnętrznie. Dla bardziej skomplikowanych scenariuszy obejmujących formuły, stylizację lub wieloarkuszowe skoroszyty, to samo podejście skaluje się bezproblemowo.

Jak pobrać dane jako plikiCSVzamiast XLSX?

Czasami lekki plikCSVjest lepszym wyborem, szczególnie gdy dane będą przekazywane do innych systemów, baz danych lub narzędzi, które nie potrzebują pełnego zestawu funkcji w rzeczywistym pliku Excel. IronXL sprawia, że przełączanie się między formatami jest trywialne.

using IronXL;
using Microsoft.AspNetCore.Mvc;
public class CsvController : Controller
{
    // Export data as aCSVfile download
    public IActionResult ExportCsv()
    {
        var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        var worksheet = workbook.CreateWorkSheet("Products");
        worksheet["A1"].Value = "SKU";
        worksheet["B1"].Value = "Product";
        worksheet["C1"].Value = "Price";
        worksheet["A2"].Value = "WDG-001";
        worksheet["B2"].Value = "Widget Pro";
        worksheet["C2"].Value = 29.99;
        // Convert toCSVstream instead of XLSX
        var stream = workbook.ToCsvStream();
        string filename = "Products.csv";
        return File(stream, "text/csv", filename);
    }
}

Plik wyjściowy CSV

Pobierz plik Excel w ASP .NET C#: Eksport danych do XLSX,CSVi innych: Obraz 3 - dane pobrane jako plikCSVzamiast Excel

Metoda ToCsvStream eksportuje pierwszy arkusz jako sformatowany jakoCSVMemoryStream. PlikiCSVświetnie nadają się do wymiany danych, ale pozbawiają formatowania, formuł i struktury wieloarkuszowej. Gdy potrzebujesz tych funkcji, trzymaj się formatu plikówXLSXpoprzez ToStream() lub ToXlsxStream(). Aby uzyskać głębszy wgląd w konwersje formatu, zapoznaj się z przewodnikiem po konwersji arkuszy kalkulacyjnych.

Jak ponownie eksportować przesłane pliki w innym formacie?

Typowy scenariusz aplikacji webowej obejmuje akceptowanie przesłanych plików od użytkowników i eksportowanie ich w innym formacie, powiedzmy, konwertowanie przesłaniaXLSna XLSX, lub produkowanie plikówCSVz skoroszytu zapisanego początkowo w formacie legacy.

public IActionResult ConvertUpload(IFormFile upload)
{
    using var memoryStream = new MemoryStream();
    upload.CopyTo(memoryStream);
    memoryStream.Position = 0;
    // Load uploaded Excel file from the stream
    var workbook = WorkBook.Load(memoryStream);
    // Re-export asXLSXregardless of the original file extension or file type
    var stream = workbook.ToXlsxStream();
    string filename = Path.GetFileNameWithoutExtension(upload.FileName) + ".xlsx";
    return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename);
}

Wyjście: KonwertowanieCSVdo formatu XLSX

Pobierz plik Excel w ASP .NET C#: Eksport danych do XLSX,CSVi innych: Obraz 4 - przykład wyjściowy dla konwersji naszego plikuCSVna format XLSX

Metoda WorkBook.Load przyjmuje MemoryStream, więc nie ma potrzeby zapisywania przesłanych plików na dysk wcześniej. Automatycznie wykrywa, czy źródło jest plikiem XLS,XLSXczyCSVi odpowiednio go przetwarza. StamtądToXlsxStream()generuje czysty nowy MemoryStream w nowoczesnym formacie XLSX, każdy bajt odpowiednio zestrukturyzowany. Jest to użyteczne do normalizacji zgłoszeń użytkowników przed dalszym przetwarzaniem lub przechowywaniem.

Jakie formaty plików mogą być eksportowane?

IronXL obsługuje eksport danych do wielu formatów arkuszy kalkulacyjnych i formatów wymiany danych. Poniższa tabela zawiera podsumowanie dostępnych opcji wyjściowych i ich najlepszych zastosowań.

|Format| Rozszerzenie pliku | Metoda strumieniowa | Najlepszy przykład zastosowania | |---|---|---|---| |XLSX|.xlsx|ToXlsxStream()| Nowoczesne arkusze kalkulacyjne Excel z formatowaniem i formułami | |XLS|.xls|ToXlsStream()| Kompatybilność ze starszymi systemami | |CSV|.csv|ToCsvStream()| Importowanie baz danych, potoki danych, lekki eksport | |XML|.xml|ToXmlStream()| Integracja systemów Enterprise | |JSON|.json|SaveAsJson()| Odpowiedzi Web API i wymiana danych | |HTML|.html|ExportToHtml()| Wyświetlanie danych z arkusza kalkulacyjnego na stronie internetowej |

Każda metoda strumienia zwraca obiekt MemoryStream, który można podłączyć bezpośrednio do pomocnika zwracającego File() w .NET Core. Alternatywa w postaci tablicy bajtów (ToByteArray()) jest również dostępna w sytuacjach, w których tablica bajtów jest wygodniejsza, na przykład podczas zapisywania do bazy danych blob lub dołączania do strumienia odpowiedzi e-mailowej. Wszystkie te metody są dostępne natychmiast po zainstalowaniu pakietu IronXL NuGet. Aby uzyskać pełny opis każdego formatu eksportu, zapoznaj się z dokumentacją dotyczącą eksportu do programu Excel.

Niezależnie od tego, czy celem jest pobieranie plików w formacieXLSXdla analityków biznesowych, eksportowanie plikówCSVdla inżynierów danych, czy generowanieXMLdo integracji korporacyjnej, IronXL zapewnia przejrzysty kod i niezawodne wyniki w aplikacjach .NET Core i .NET Framework. Chcesz w swoim kolejnym projekcie korzystać z gotowych do użycia eksportów arkuszy kalkulacyjnych? Pobierz bezpłatną licencję próbną lub zapoznaj się z opcjami licencyjnymi, aby rozpocząć pracę już dziś. Szczegółowe instrukcje konfiguracji można znaleźć w przewodniku IronXL dla początkujących.

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ęczników.

...
Czytaj więcej

Powiązane artykuły

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
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja 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