Pri izdelavi spletnih aplikacij boste pogosto morali uvoziti ali izvoziti podatke iz dokumentov Word ali Excel ali v njih. To lahko dosežete na več načinov in veliko paketov NuGet za delo z Wordom ali Excelom. Ta članek razpravlja o tem, kako lahko v programu ASP.NET Core sodelujemo z ClosedXML za izvoz podatkov v Excel.
Če želite delati s primeri kod v tem članku, morate imeti v sistemu nameščen Visual Studio 2019. Če kopije še nimate, lahko Visual Studio 2019 prenesete tukaj.
Ustvarite projekt ASP.NET Core MVC v Visual Studio
Najprej ustvarimo projekt ASP.NET Core v Visual Studio 2019. Če predpostavimo, da je Visual Studio 2019 nameščen v vašem sistemu, sledite spodnjim korakom, da ustvarite nov projekt ASP.NET Core v Visual Studio.
- Zaženite Visual Studio IDE.
- Kliknite »Ustvari nov projekt«.
- V oknu »Ustvari nov projekt« na prikazanih seznamih predlog izberite »Spletna aplikacija ASP.NET Core«.
- Kliknite Naprej.
- V oknu »Konfiguriranje novega projekta« določite ime in mesto novega projekta.
- Po želji izberite potrditveno polje »Rešitev in projekt postavite v isti imenik«.
- Kliknite Ustvari.
- V naslednjem oknu »Ustvari novo spletno aplikacijo ASP.NET Core« izberite .NET Core kot izvajalno okolje in ASP.NET Core 2.2 (ali novejšo) s spustnega seznama na vrhu. Uporabljal bom ASP.NET Core 3.0.
- Kot predlogo projekta izberite »Spletna aplikacija (Model-View-Controller)«, da ustvarite novo aplikacijo ASP.NET Core MVC.
- Prepričajte se, da sta potrditveni polji »Omogoči podporo za Docker« in »Konfiguriranje za HTTPS« odstranjeni, saj tukaj ne bomo uporabljali teh funkcij.
- Prepričajte se, da je preverjanje pristnosti nastavljeno na »Brez preverjanja pristnosti«, saj tudi preverjanja pristnosti ne bomo uporabljali.
- Kliknite Ustvari.
Po teh korakih bi morali v Visual Studio ustvariti nov projekt ASP.NET Core MVC. Ta projekt bomo uporabili za ponazoritev izvoza podatkov za Excel v spodnjih oddelkih.
Namestite paket ClosedXML NuGet
Izbirate lahko med več knjižnicami, če želite podatke izvoziti v Excel. Eden izmed njih se imenuje ClosedXML. Ta paket lahko namestite prek upravitelja paketov NuGet znotraj IDE Visual Studio 2019 ali pa tako, da v konzoli upravitelja paketov NuGet izvedete naslednji ukaz:
Namestitveni paket ClosedXML
Iz ASP.NET Core 3.0 izvozite podatke v obliki datoteke CSV
Izvoz podatkov kot datoteke, ločene z vejicami (CSV), je preprost. Za to lahko izkoristite paket NuGet, kot je CsvExport ali AWright18.SimpleCSVExporter, ali pa ročno. Zaradi poenostavitve bomo datoteko CSV ustvarili ročno. Razmislite o naslednjem razredu z imenom Avtor.
javni razred Avtor{
public int Id {get; set; }
javni niz FirstName {get; set; }
javni niz LastName {get; set; }
}
Nato lahko podatke vstavite v seznam avtorjev, kot je prikazano v spodnjem delčku kode.
Avtorji seznama = nov seznam{
nov avtor {Id = 1, FirstName = "Joydip", LastName = "Kanjilal"},
novi avtor {Id = 2, FirstName = "Steve", LastName = "Smith"},
nov avtor {Id = 3, FirstName = "Anand", LastName = "Narayaswamy"}
};
Naslednji delček kode prikazuje, kako lahko v akcijski metodi krmilnika ustvarite datoteko CSV.
public IActionResult DownloadCommaSeperatedFile (){
poskusite
{
StringBuilder stringBuilder = nov StringBuilder ();
stringBuilder.AppendLine ("Id, Ime, Priimek");
foreach (var avtor v avtorjih)
{
stringBuilder.AppendLine ($ "{author.Id},
{author.FirstName}, {author.LastName} ");
}
vrni datoteko (Encoding.UTF8.GetBytes
(stringBuilder.ToString ()), "text / csv", "author.csv");
}
ulov
{
return Error ();
}
}
Izvozite podatke kot datoteko XLSX v ASP.NET Core 3.0
Delovni zvezek v Excelu je sestavljen iz več delovnih listov. Excelov delovni zvezek lahko ustvarite s pomočjo naslednje kode.
var delovni zvezek = nov XLWorkbook ();
Nato lahko izkoristite vmesnik IXLWorkSheet za ustvarjanje in dodajanje delovnih listov v delovni zvezek, kot je prikazano spodaj.
IXLWorksheet worksheet = workbook.Worksheets.Add ("Avtorji");worksheet.Cell (1, 1) .Value = "Id";
delovni list.Cell (1, 2) .Value = "FirstName";
worksheet.Cell (1, 3) .Value = "Priimek";
za (int indeks = 1; indeks <= avtorji.število; indeks ++)
{
delovni list.Cell (indeks + 1, 1) .Vrednost = avtorji [indeks - 1] .Id;
delovni list.Cell (indeks + 1, 2) .Vrednost = avtorji [indeks - 1] .Primerime;
delovni list.Cell (indeks + 1, 3) .Vrednost = avtorji [indeks - 1] .LastName;
}
Na koncu lahko delovni zvezek shranite kot pomnilniški tok in nato ustvarite primerek FileContentResult, kot je prikazano spodaj.
z uporabo (var stream = new MemoryStream ()){
delovni zvezek.SaveAs (tok);
var content = stream.ToArray ();
vrni datoteko (content, contentType, fileName);
}
Prenesite Excel dokument v ASP.NET Core 3.0
Tu je celotna izvorna koda akcijske metode, s katero lahko prenesete Excelov dokument.
javni IActionResult DownloadExcelDocument (){
string contentType = "application / vnd.openxmlformats-
officedocument.spreadsheetml.sheet ";
string fileName = "avtorji.xlsx";
poskusite
{
z uporabo (var delovni zvezek = nov XLWorkbook ())
{
IXLWorksheet delovni list =
workbook.Worksheets.Add ("Avtorji");
worksheet.Cell (1, 1) .Value = "Id";
delovni list.Cell (1, 2) .Value = "FirstName";
worksheet.Cell (1, 3) .Value = "Priimek";
za (int indeks = 1; indeks <= avtorji.število; indeks ++)
{
delovni list.Cell (indeks + 1, 1) .Vrednost =
avtorji [kazalo - 1] .Id;
delovni list.Cell (indeks + 1, 2) .Vrednost =
avtorji [kazalo - 1] .Ime;
delovni list.Cell (indeks + 1, 3) .Vrednost =
avtorji [kazalo - 1] .LastName;
}
z uporabo (var stream = new MemoryStream ())
{
delovni zvezek.SaveAs (tok);
var content = stream.ToArray ();
vrni datoteko (content, contentType, fileName);
}
}
}
ulov (izjema ex)
{
return Error ();
}
}
Čeprav smo v tem članku uporabili ClosedXML, obstaja več drugih paketov za branje, pisanje in obdelavo podatkov Excel v ASP.NET Core, vključno z EPPlus in NPOI. Več o ClosedXML lahko izveste v GitHub na //github.com/ClosedXML/ClosedXML. Uvoz podatkov Excel v aplikaciji ASP.NET Core bom obravnaval v prihodnji objavi tukaj.
Kako narediti več v ASP.NET in ASP.NET Core:
- Kako uporabljati predpomnjenje v pomnilniku v ASP.NET Core
- Kako ravnati z napakami v spletnem API-ju ASP.NET
- Kako prenesti več parametrov v metode krmilnika spletnega API-ja
- Kako zapisati metapodatke zahtev in odzivov v spletni API ASP.NET
- Kako delati s HttpModules v ASP.NET
- Napredno spreminjanje različic v ASP.NET Core Web API
- Kako uporabiti vbrizgavanje odvisnosti v ASP.NET Core
- Kako delati s sejami v ASP.NET
- Kako delati z HTTPHandlers v ASP.NET
- Kako uporabljati IHostedService v ASP.NET Core
- Kako porabiti storitev WCF SOAP v ASP.NET Core
- Kako izboljšati delovanje aplikacij ASP.NET Core
- Kako porabiti spletni API ASP.NET Core s pomočjo RestSharp
- Kako delati s prijavo v ASP.NET Core
- Kako uporabljati MediatR v ASP.NET Core
- Kako delati s stanjem seje v ASP.NET Core
- Kako uporabljati Nancy v ASP.NET Core
- Razumevanje vezave parametrov v spletnem API-ju ASP.NET
- Kako naložiti datoteke v ASP.NET Core MVC
- Kako implementirati globalno obravnavo izjem v ASP.NET Core Web API
- Kako izvajati zdravstvene preglede v ASP.NET Core
- Najboljše prakse predpomnjenja v ASP.NET
- Kako uporabljati sporočila Apache Kafka v .NET
- Kako omogočiti CORS v spletnem API-ju
- Kdaj uporabiti WebClient v primerjavi s HttpClient v primerjavi s HttpWebRequest
- Kako delati s predpomnilnikom Redis v .NET
- Kdaj uporabiti Task.WaitAll v primerjavi z Task.WhenAll v .NET