Exportieren von Daten nach Excel in ASP.NET Core 3.0

Beim Erstellen von Webanwendungen müssen Sie häufig Daten aus oder in Word- oder Excel-Dokumente importieren oder exportieren. Es gibt verschiedene Möglichkeiten, dies zu erreichen, und viele NuGet-Pakete, um mit Word oder Excel zu arbeiten. Dieser Artikel beschreibt, wie wir mit ClosedXML in ASP.NET Core arbeiten können, um Daten nach Excel zu exportieren.

Um mit den in diesem Artikel bereitgestellten Codebeispielen arbeiten zu können, muss Visual Studio 2019 auf Ihrem System installiert sein. Wenn Sie noch keine Kopie haben, können Sie Visual Studio 2019 hier herunterladen.

Erstellen Sie ein ASP.NET Core MVC-Projekt in Visual Studio

Lassen Sie uns zunächst ein ASP.NET Core-Projekt in Visual Studio 2019 erstellen. Angenommen, Visual Studio 2019 ist auf Ihrem System installiert, führen Sie die folgenden Schritte aus, um ein neues ASP.NET Core-Projekt in Visual Studio zu erstellen.

  1. Starten Sie die Visual Studio-IDE.
  2. Klicken Sie auf "Neues Projekt erstellen".
  3. Wählen Sie im Fenster "Neues Projekt erstellen" aus der Liste der angezeigten Vorlagen "ASP.NET Core-Webanwendung" aus.
  4. Weiter klicken.
  5. Geben Sie im Fenster "Konfigurieren Sie Ihr neues Projekt" den Namen und den Speicherort für das neue Projekt an.
  6. Aktivieren Sie optional das Kontrollkästchen "Lösung und Projekt im selben Verzeichnis platzieren".
  7. Klicken Sie auf Erstellen.
  8. Wählen Sie im nächsten Fenster "Neue ASP.NET Core-Webanwendung erstellen" .NET Core als Laufzeit und ASP.NET Core 2.2 (oder höher) aus der Dropdown-Liste oben aus. Ich werde ASP.NET Core 3.0 verwenden. 
  9. Wählen Sie als Projektvorlage „Webanwendung (Model-View-Controller)“ aus, um eine neue ASP.NET Core MVC-Anwendung zu erstellen. 
  10. Stellen Sie sicher, dass die Kontrollkästchen "Docker-Unterstützung aktivieren" und "Für HTTPS konfigurieren" deaktiviert sind, da diese Funktionen hier nicht verwendet werden.
  11. Stellen Sie sicher, dass die Authentifizierung auf "Keine Authentifizierung" eingestellt ist, da wir auch keine Authentifizierung verwenden.
  12. Klicken Sie auf Erstellen. 

Wenn Sie diese Schritte ausführen, sollte ein neues ASP.NET Core MVC-Projekt in Visual Studio erstellt werden. In diesem Projekt wird das Exportieren von Daten für Excel in den folgenden Abschnitten veranschaulicht.

Installieren Sie das ClosedXML NuGet-Paket 

Es stehen mehrere Bibliotheken zur Auswahl, wenn Sie Daten nach Excel exportieren möchten. Einer von ihnen heißt ClosedXML. Sie können dieses Paket entweder über den NuGet-Paketmanager in der Visual Studio 2019-IDE oder durch Ausführen des folgenden Befehls in der NuGet-Paketmanagerkonsole installieren:

Install-Package ClosedXML

Exportieren Sie Daten als CSV-Datei aus ASP.NET Core 3.0

Das Exportieren von Daten als CSV-Datei (Comma Separated) ist einfach. Sie können ein NuGet-Paket wie CsvExport oder AWright18 nutzen. Einfacher CSVExporter, um dies zu erreichen, oder Sie können es manuell tun. Der Einfachheit halber generieren wir eine CSV-Datei manuell. Betrachten Sie die folgende Klasse mit dem Namen Author.

öffentliche Klasse Autor

{

  public int Id {get; einstellen; }}

  öffentliche Zeichenfolge Vorname {get; einstellen; }}

  öffentlicher String Nachname {get; einstellen; }}

}}

Als Nächstes können Sie Daten in eine Liste von Autoren einfügen, wie im folgenden Code-Snippet gezeigt.

Autoren auflisten = neue Liste

{

    neuer Autor {Id = 1, Vorname = "Joydip", Nachname = "Kanjilal"},

    neuer Autor {Id = 2, Vorname = "Steve", Nachname = "Smith"},

    neuer Autor {Id = 3, Vorname = "Anand", Nachname = "Narayaswamy"}

};

Das folgende Codefragment zeigt, wie Sie eine CSV-Datei in einer Aktionsmethode Ihres Controllers generieren können.

public IActionResult DownloadCommaSeperatedFile ()

{

    Versuchen

    {

       StringBuilder stringBuilder = new StringBuilder ();

       stringBuilder.AppendLine ("ID, Vorname, Nachname");

       foreach (var Autor in Autoren)

       {

           stringBuilder.AppendLine ($ "{author.Id},

           {author.FirstName}, {author.LastName} ");

       }}

      Rückgabedatei (Encoding.UTF8.GetBytes

      (stringBuilder.ToString ()), "text / csv", "author.csv");

    }}

    Fang

    {

       return Error ();

    }}

}}

Exportieren Sie Daten als XLSX-Datei in ASP.NET Core 3.0

Eine Arbeitsmappe in Excel besteht aus mehreren Arbeitsblättern. Sie können eine Excel-Arbeitsmappe mit dem folgenden Code erstellen.

var workbook = neues XLWorkbook ();

Sie können dann die IXLWorkSheet-Oberfläche nutzen, um Arbeitsblätter wie unten gezeigt zu erstellen und zur Arbeitsmappe hinzuzufügen.

IXLWorksheet worksheet = workbook.Worksheets.Add ("Autoren");

Arbeitsblatt.Cell (1, 1) .Value = "Id";

Arbeitsblatt.Zelle (1, 2) .Value = "Vorname";

Arbeitsblatt.Zelle (1, 3) .Value = "Nachname";

für (int index = 1; index <= autoren.Count; index ++)

{

   Arbeitsblatt.Zelle (Index + 1, 1) .Wert = Autoren [Index - 1] .Id;

   Arbeitsblatt.Zelle (Index + 1, 2) .Wert = Autoren [Index - 1] .FirstName;

   Arbeitsblatt.Zelle (Index + 1, 3) .Wert = Autoren [Index - 1] .LastName;

}}

Zuletzt können Sie die Arbeitsmappe als Speicherstrom speichern und dann eine FileContentResult-Instanz erstellen, wie unten gezeigt.

using (var stream = neuer MemoryStream ())

{

     workbook.SaveAs (Stream);

     var content = stream.ToArray ();

     return File (content, contentType, fileName);

}}

Laden Sie ein Excel-Dokument in ASP.NET Core 3.0 herunter

Hier ist der vollständige Quellcode der Aktionsmethode, mit der ein Excel-Dokument heruntergeladen werden kann.

public IActionResult DownloadExcelDocument ()

        {

            Zeichenfolge contentType = "application / vnd.openxmlformats-

            officedocument.spreadsheetml.sheet ";

            string fileName = "autoren.xlsx";

            Versuchen

            {

                using (var workbook = neues XLWorkbook ())

                {

                    IXLWorksheet Arbeitsblatt =

                    workbook.Worksheets.Add ("Autoren");

                    Arbeitsblatt.Cell (1, 1) .Value = "Id";

                    Arbeitsblatt.Zelle (1, 2) .Value = "Vorname";

                    Arbeitsblatt.Zelle (1, 3) .Value = "Nachname";

                    für (int index = 1; index <= autoren.Count; index ++)

                    {

                        Arbeitsblatt.Zelle (Index + 1, 1) .Wert =

                        Autoren [Index - 1] .Id;

                        Arbeitsblatt.Zelle (Index + 1, 2) .Wert =

                        Autoren [Index - 1] .FirstName;

                        Arbeitsblatt.Zelle (Index + 1, 3) .Wert =

                        Autoren [Index - 1] .LastName;

                    }}

                    using (var stream = neuer MemoryStream ())

                    {

                        workbook.SaveAs (Stream);

                        var content = stream.ToArray ();

                        return File (content, contentType, fileName);

                    }}

                }}

            }}

            fangen (Ausnahme ex)

            {

                return Error ();

            }}

        }}

Während wir in diesem Artikel ClosedXML verwendet haben, gibt es in ASP.NET Core mehrere andere Pakete zum Lesen, Schreiben und Bearbeiten von Excel-Daten, einschließlich EPPlus und NPOI. Weitere Informationen zu ClosedXML auf GitHub finden Sie unter //github.com/ClosedXML/ClosedXML. Ich werde das Importieren von Excel-Daten in eine ASP.NET Core-Anwendung in einem zukünftigen Beitrag hier diskutieren.

So machen Sie mehr in ASP.NET und ASP.NET Core:

  • Verwendung des In-Memory-Caching in ASP.NET Core
  • Behandlung von Fehlern in der ASP.NET-Web-API
  • Übergeben mehrerer Parameter an Web-API-Controller-Methoden
  • So protokollieren Sie Anforderungs- und Antwortmetadaten in der ASP.NET-Web-API
  • So arbeiten Sie mit HttpModules in ASP.NET
  • Erweiterte Versionierung in der ASP.NET Core-Web-API
  • Verwendung der Abhängigkeitsinjektion in ASP.NET Core
  • So arbeiten Sie mit Sitzungen in ASP.NET
  • So arbeiten Sie mit HTTPHandlern in ASP.NET
  • Verwendung von IHostedService in ASP.NET Core
  • So verwenden Sie einen WCF-SOAP-Dienst in ASP.NET Core
  • So verbessern Sie die Leistung von ASP.NET Core-Anwendungen
  • So verwenden Sie eine ASP.NET Core-Web-API mit RestSharp
  • So arbeiten Sie mit der Protokollierung in ASP.NET Core
  • Verwendung von MediatR in ASP.NET Core
  • So arbeiten Sie mit dem Sitzungsstatus in ASP.NET Core
  • Verwendung von Nancy in ASP.NET Core
  • Grundlegendes zur Parameterbindung in der ASP.NET-Web-API
  • So laden Sie Dateien in ASP.NET Core MVC hoch
  • Implementieren der globalen Ausnahmebehandlung in der ASP.NET Core-Web-API
  • Implementieren von Integritätsprüfungen in ASP.NET Core
  • Best Practices für das Caching in ASP.NET
  • Verwendung von Apache Kafka Messaging in .NET
  • So aktivieren Sie CORS in Ihrer Web-API
  • Wann wird WebClient vs. HttpClient vs. HttpWebRequest verwendet?
  • So arbeiten Sie mit Redis Cache in .NET
  • Verwendung von Task.WaitAll vs. Task.WhenAll in .NET