Programmering

Sådan eksporteres data til Excel i ASP.NET Core 3.0

Når du bygger webapplikationer, skal du ofte importere eller eksportere data fra eller til Word- eller Excel-dokumenter. Der er flere måder at opnå dette på og masser af NuGet-pakker til at arbejde med Word eller Excel. Denne artikel diskuterer, hvordan vi kan arbejde med ClosedXML i ASP.NET Core for at eksportere data til Excel.

For at arbejde med kodeeksemplerne i denne artikel skal du have Visual Studio 2019 installeret i dit system. Hvis du ikke allerede har en kopi, kan du downloade Visual Studio 2019 her.

Opret et ASP.NET Core MVC-projekt i Visual Studio

Lad os først oprette et ASP.NET Core-projekt i Visual Studio 2019. Forudsat at Visual Studio 2019 er installeret i dit system, skal du følge nedenstående trin for at oprette et nyt ASP.NET Core-projekt i Visual Studio.

  1. Start Visual Studio IDE.
  2. Klik på "Opret nyt projekt."
  3. I vinduet "Opret nyt projekt" skal du vælge "ASP.NET Core Web Application" fra listen over skabeloner, der vises.
  4. Klik på Næste.
  5. I vinduet "Konfigurer dit nye projekt" skal du angive navnet og placeringen for det nye projekt.
  6. Marker afkrydsningsfeltet "Placer løsning og projekt i samme bibliotek".
  7. Klik på Opret.
  8. I vinduet "Opret en ny ASP.NET Core-webapplikation", der vises derefter, skal du vælge .NET Core som runtime og ASP.NET Core 2.2 (eller nyere) fra rullelisten øverst. Jeg bruger ASP.NET Core 3.0.
  9. Vælg "Webapplikation (Model-View-Controller)" som projektskabelon for at oprette et nyt ASP.NET Core MVC-program.
  10. Sørg for, at afkrydsningsfelterne "Aktivér Docker-support" og "Konfigurer til HTTPS" ikke er markeret, da vi ikke bruger disse funktioner her.
  11. Sørg for, at godkendelse er indstillet til "Ingen godkendelse", da vi heller ikke bruger godkendelse.
  12. Klik på Opret.

Ved at følge disse trin skal der oprettes et nyt ASP.NET Core MVC-projekt i Visual Studio. Vi bruger dette projekt til at illustrere eksport af data til Excel i afsnittene nedenfor.

Installer ClosedXML NuGet-pakken

Der er flere biblioteker at vælge imellem, hvis du vil eksportere data til Excel. En af dem hedder ClosedXML. Du kan installere denne pakke enten via NuGet pakkehåndtering inde i Visual Studio 2019 IDE eller ved at udføre følgende kommando i NuGet pakkehåndteringskonsol:

Installationspakke lukketXML

Eksporter data som en CSV-fil fra ASP.NET Core 3.0

Eksport af data som en kommasepareret (CSV) fil er enkel. Du kan drage fordel af en NuGet-pakke, såsom CsvExport eller AWright18.SimpleCSVExporter for at opnå dette, eller du kan gøre det manuelt. For enkelheds skyld genererer vi en CSV-fil manuelt. Overvej følgende klasse ved navn Forfatter.

offentlig klasse Forfatter

{

public int Id {get; sæt; }

offentlig streng Fornavn {get; sæt; }

public string LastName {get; sæt; }

}

Dernæst kan du udfylde data på en liste over forfattere som vist i kodestykket nedenfor.

Listeforfattere = ny liste

{

ny forfatter {Id = 1, FirstName = "Joydip", LastName = "Kanjilal"},

ny forfatter {Id = 2, FirstName = "Steve", LastName = "Smith"},

ny forfatter {Id = 3, FirstName = "Anand", LastName = "Narayaswamy"}

};

Følgende kodestykke viser, hvordan du kan generere en CSV-fil i en handlingsmetode for din controller.

offentlig IActionResult DownloadCommaSeperatedFile ()

{

prøve

    {

StringBuilder stringBuilder = ny StringBuilder ();

stringBuilder.AppendLine ("Id, FirstName, LastName");

foreach (var forfatter i forfattere)

       {

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

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

       }

returner fil (Encoding.UTF8.GetBytes

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

    }

fangst

    {

returneringsfejl ();

    }

}

Eksporter data som en XLSX-fil i ASP.NET Core 3.0

En projektmappe i Excel består af flere regneark. Du kan oprette en Excel-projektmappe ved hjælp af følgende kode.

var projektmappe = ny XLWorkbook ();

Du kan derefter drage fordel af IXLWorkSheet-grænsefladen til at oprette og tilføje regneark til projektmappen som vist nedenfor.

IXLWorksheet-regneark = projektmappe.Worksheets.Add ("Forfattere");

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

regneark.Cell (1, 2) .Value = "Fornavn";

regneark.Cell (1, 3) .Value = "Efternavn";

for (int indeks = 1; indeks <= forfattere.Tælling; indeks ++)

{

regneark.Cell (indeks + 1, 1) .Værdi = forfattere [indeks - 1] .Id;

regneark.Cell (indeks + 1, 2) .Værdi = forfattere [indeks - 1]. Første navn;

regneark.Cell (indeks + 1, 3) .Værdi = forfattere [indeks - 1] .LastName;

}

Endelig kan du gemme projektmappen som en hukommelsesstrøm og derefter oprette en FileContentResult-forekomst som vist nedenfor.

ved hjælp af (var stream = ny MemoryStream ())

{

projektmappe.SaveAs (stream);

var indhold = stream.ToArray ();

returner fil (indhold, indholdstype, filnavn);

}

Download et Excel-dokument i ASP.NET Core 3.0

Her er den komplette kildekode for handlingsmetoden, der kan bruges til at downloade et Excel-dokument.

offentlig IActionResult DownloadExcelDocument ()

        {

string contentType = "application / vnd.openxmlformats-

officedocument.spreadsheetml.sheet ";

streng filnavn = "forfattere.xlsx";

prøve

            {

ved hjælp af (var projektmappe = ny XLWorkbook ())

                {

IXLWorksheet regneark =

workbook.Worksheets.Add ("Forfattere");

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

regneark.Cell (1, 2) .Value = "Fornavn";

regneark.Cell (1, 3) .Value = "Efternavn";

for (int indeks = 1; indeks <= forfattere.Tælling; indeks ++)

                    {

regneark.Cell (indeks + 1, 1) .Værdi =

forfattere [indeks - 1]. Id;

regneark.Cell (indeks + 1, 2) .Værdi =

forfattere [indeks - 1]. Første navn;

regneark.Cell (indeks + 1, 3) .Værdi =

forfattere [indeks - 1] .LastName;

                    }

ved hjælp af (var stream = ny MemoryStream ())

                    {

workbook.SaveAs (stream);

var indhold = stream.ToArray ();

returner fil (indhold, indholdstype, filnavn);

                    }

                }

            }

fangst (undtagelse ex)

            {

returneringsfejl ();

            }

        }

Mens vi har brugt ClosedXML i denne artikel, er der flere andre pakker til læsning, skrivning og manipulering af Excel-data i ASP.NET Core inklusive EPPlus og NPOI. Du kan lære mere om ClosedXML på GitHub på //github.com/ClosedXML/ClosedXML. Jeg diskuterer import af Excel-data i en ASP.NET Core-applikation i et fremtidigt indlæg her.

Sådan gør du mere i ASP.NET og ASP.NET Core:

  • Sådan bruges cache i hukommelsen i ASP.NET Core
  • Sådan håndteres fejl i ASP.NET Web API
  • Sådan overføres flere parametre til Web API-controller-metoder
  • Sådan logges anmodnings- og svarmetadata i ASP.NET Web API
  • Sådan arbejder du med HttpModules i ASP.NET
  • Avanceret versionering i ASP.NET Core Web API
  • Sådan bruges afhængighedsinjektion i ASP.NET Core
  • Sådan arbejder du med sessioner i ASP.NET
  • Sådan arbejder du med HTTPHandlers i ASP.NET
  • Sådan bruges IHostedService i ASP.NET Core
  • Sådan forbruges en WCF SOAP-tjeneste i ASP.NET Core
  • Sådan forbedres ydeevnen for ASP.NET Core-applikationer
  • Sådan forbruges en ASP.NET Core Web API ved hjælp af RestSharp
  • Sådan arbejder du med logning i ASP.NET Core
  • Sådan bruges MediatR i ASP.NET Core
  • Sådan arbejder du med sessionstilstand i ASP.NET Core
  • Sådan bruges Nancy i ASP.NET Core
  • Forstå parameterbinding i ASP.NET Web API
  • Sådan uploades filer i ASP.NET Core MVC
  • Sådan implementeres global undtagelseshåndtering i ASP.NET Core Web API
  • Sådan implementeres sundhedstjek i ASP.NET Core
  • Bedste fremgangsmåder inden caching i ASP.NET
  • Sådan bruges Apache Kafka-meddelelser i .NET
  • Sådan aktiveres CORS på din web-API
  • Hvornår skal man bruge WebClient vs. HttpClient vs. HttpWebRequest
  • Sådan arbejder du med Redis Cache i .NET
  • Hvornår skal man bruge Task.WaitAll vs. Task.WhenAll i .NET