Programmering

Slik eksporterer du data til Excel i ASP.NET Core 3.0

Når du bygger webapplikasjoner, må du ofte importere eller eksportere data fra eller til Word- eller Excel-dokumenter. Det er flere måter å oppnå dette på, og mange NuGet-pakker for å jobbe med Word eller Excel. Denne artikkelen diskuterer hvordan vi kan jobbe med ClosedXML i ASP.NET Core for å eksportere data til Excel.

For å jobbe med kodeeksemplene som er gitt i denne artikkelen, bør du ha Visual Studio 2019 installert på systemet ditt. Hvis du ikke allerede har en kopi, kan du laste ned Visual Studio 2019 her.

Opprett et ASP.NET Core MVC-prosjekt i Visual Studio

For det første, la oss lage et ASP.NET Core-prosjekt i Visual Studio 2019. Forutsatt at Visual Studio 2019 er installert i systemet ditt, følger du trinnene som er beskrevet nedenfor for å opprette et nytt ASP.NET Core-prosjekt i Visual Studio.

  1. Start Visual Studio IDE.
  2. Klikk på "Opprett nytt prosjekt."
  3. I vinduet "Opprett nytt prosjekt" velger du "ASP.NET Core Web Application" fra listen over maler som vises.
  4. Klikk på Neste.
  5. I vinduet "Konfigurer ditt nye prosjekt" angir du navnet og stedet for det nye prosjektet.
  6. Du kan eventuelt merke av for "Plasser løsning og prosjekt i samme katalog".
  7. Klikk på Opprett.
  8. I vinduet "Opprett et nytt ASP.NET Core Web Application" som vises, velger du .NET Core som kjøretid og ASP.NET Core 2.2 (eller senere) fra rullegardinlisten øverst. Jeg bruker ASP.NET Core 3.0.
  9. Velg "Web Application (Model-View-Controller)" som prosjektmal for å opprette et nytt ASP.NET Core MVC-program.
  10. Forsikre deg om at avmerkingsboksene "Aktiver Docker-støtte" og "Konfigurer for HTTPS" ikke er merket av da vi ikke bruker disse funksjonene her.
  11. Forsikre deg om at autentisering er satt til "ingen godkjenning", da vi heller ikke bruker autentisering.
  12. Klikk på Opprett.

Ved å følge disse trinnene bør du opprette et nytt ASP.NET Core MVC-prosjekt i Visual Studio. Vi bruker dette prosjektet til å illustrere eksport av data for Excel i avsnittene nedenfor.

Installer ClosedXML NuGet-pakken

Det er flere biblioteker å velge mellom hvis du vil eksportere data til Excel. En av dem heter ClosedXML. Du kan installere denne pakken enten via NuGet pakkebehandling i Visual Studio 2019 IDE, eller ved å utføre følgende kommando i NuGet pakkebehandler-konsoll:

Installasjonspakke ClosedXML

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

Det er enkelt å eksportere data som en kommaseparert (CSV) fil. Du kan dra nytte av en NuGet-pakke som CsvExport eller AWright18.SimpleCSVExporter for å oppnå dette, eller du kan gjøre det manuelt. For enkelhets skyld genererer vi en CSV-fil manuelt. Tenk på følgende klasse som heter Forfatter.

offentlig klasse Forfatter

{

offentlig int Id {get; sett; }

offentlig streng Fornavn {get; sett; }

offentlig streng Etternavn {get; sett; }

}

Deretter kan du fylle ut data i en liste over forfattere som vist i kodebiten gitt 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 kodebit viser hvordan du kan generere en CSV-fil i en handlingsmetode for kontrolleren din.

offentlig IActionResult Last nedCommaSeperatedFile ()

{

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");

    }

å fange

    {

returfeil ();

    }

}

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

En arbeidsbok i Excel består av flere regneark. Du kan opprette en Excel-arbeidsbok med følgende kode.

var arbeidsbok = ny XLWorkbook ();

Du kan deretter dra nytte av IXLWorkSheet-grensesnittet for å opprette og legge til regneark i arbeidsboken som vist nedenfor.

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

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

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

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

for (int indeks = 1; indeks <= forfattere.Tall; indeks ++)

{

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

regneark.Cell (indeks + 1, 2) .Value = forfattere [indeks - 1] .FirstName;

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

}

Til slutt kan du lagre arbeidsboken som en minnestrøm og deretter opprette en FileContentResult-forekomst som vist nedenfor.

bruker (var stream = ny MemoryStream ())

{

arbeidsbok.SaveAs (stream);

var innhold = stream.ToArray ();

returner fil (innhold, innholdstype, filnavn);

}

Last ned et Excel-dokument i ASP.NET Core 3.0

Her er den komplette kildekoden til handlingsmetoden som kan brukes til å laste ned et Excel-dokument.

offentlig IActionResult Last nedExcelDocument ()

        {

string contentType = "application / vnd.openxmlformats-

officedocument.spreadsheetml.sheet ";

streng filnavn = "author.xlsx";

prøve

            {

bruker (var arbeidsbok = ny XLWorkbook ())

                {

IXLWorksheet regneark =

arbeidsbok.Worksheets.Add ("Forfattere");

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

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

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

for (int indeks = 1; indeks <= forfattere.Tall; indeks ++)

                    {

regneark.Cell (indeks + 1, 1) .Value =

forfattere [indeks - 1] .Id;

regneark.Cell (indeks + 1, 2) .Value =

forfattere [indeks - 1] .FirstName;

regneark.Cell (indeks + 1, 3) .Value =

forfattere [indeks - 1] .LastName;

                    }

bruker (var stream = ny MemoryStream ())

                    {

arbeidsbok.SaveAs (stream);

var innhold = stream.ToArray ();

returner fil (innhold, innholdstype, filnavn);

                    }

                }

            }

fangst (Unntak eks)

            {

returfeil ();

            }

        }

Mens vi har brukt ClosedXML i denne artikkelen, er det flere andre pakker for lesing, skriving og manipulering av Excel-data i ASP.NET Core inkludert EPPlus og NPOI. Du kan lære mer om ClosedXML på GitHub på //github.com/ClosedXML/ClosedXML. Jeg vil diskutere import av Excel-data i et ASP.NET Core-program i et fremtidig innlegg her.

Hvordan gjøre mer i ASP.NET og ASP.NET Core:

  • Hvordan bruke hurtigbufring i minnet i ASP.NET Core
  • Hvordan håndtere feil i ASP.NET Web API
  • Hvordan overføre flere parametere til Web API-kontrollermetoder
  • Hvordan logge forespørsels- og svarmetadata i ASP.NET Web API
  • Hvordan jobbe med HttpModules i ASP.NET
  • Avansert versjonering i ASP.NET Core Web API
  • Hvordan bruke avhengighetsinjeksjon i ASP.NET Core
  • Hvordan jobbe med økter i ASP.NET
  • Hvordan jobbe med HTTPHandlers i ASP.NET
  • Hvordan bruke IHostedService i ASP.NET Core
  • Hvordan forbruke en WCF SOAP-tjeneste i ASP.NET Core
  • Hvordan forbedre ytelsen til ASP.NET Core-applikasjoner
  • Slik bruker du et ASP.NET Core Web API ved hjelp av RestSharp
  • Hvordan jobbe med innlogging i ASP.NET Core
  • Hvordan bruke MediatR i ASP.NET Core
  • Hvordan jobbe med økttilstand i ASP.NET Core
  • Hvordan bruke Nancy i ASP.NET Core
  • Forstå parameterinnbinding i ASP.NET Web API
  • Hvordan laste opp filer i ASP.NET Core MVC
  • Hvordan implementere global unntaksbehandling i ASP.NET Core Web API
  • Hvordan implementere helsesjekker i ASP.NET Core
  • Beste fremgangsmåter for hurtigbufring i ASP.NET
  • Hvordan bruke Apache Kafka-meldinger i .NET
  • Hvordan aktivere CORS på web-API-et
  • Når skal du bruke WebClient vs. HttpClient vs. HttpWebRequest
  • Hvordan jobbe med Redis Cache i .NET
  • Når skal jeg bruke Task.WaitAll vs. Task.WhenAll i .NET
$config[zx-auto] not found$config[zx-overlay] not found