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.
- Start Visual Studio IDE.
- Klik på "Opret nyt projekt."
- I vinduet "Opret nyt projekt" skal du vælge "ASP.NET Core Web Application" fra listen over skabeloner, der vises.
- Klik på Næste.
- I vinduet "Konfigurer dit nye projekt" skal du angive navnet og placeringen for det nye projekt.
- Marker afkrydsningsfeltet "Placer løsning og projekt i samme bibliotek".
- Klik på Opret.
- 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.
- Vælg "Webapplikation (Model-View-Controller)" som projektskabelon for at oprette et nyt ASP.NET Core MVC-program.
- Sørg for, at afkrydsningsfelterne "Aktivér Docker-support" og "Konfigurer til HTTPS" ikke er markeret, da vi ikke bruger disse funktioner her.
- Sørg for, at godkendelse er indstillet til "Ingen godkendelse", da vi heller ikke bruger godkendelse.
- 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