Programavimas

Kaip eksportuoti duomenis į „Excel“ naudojant ASP.NET Core 3.0

Kuriant žiniatinklio programas dažnai reikės importuoti ar eksportuoti duomenis iš „Word“ ar „Excel“ dokumentų arba į juos. Yra keli būdai, kaip tai pasiekti, ir daugybė „NuGet“ paketų darbui su „Word“ ar „Excel“. Šiame straipsnyje aptariama, kaip mes galime dirbti su „ClosedXML“ sistemoje „ASP.NET Core“ eksportuodami duomenis į „Excel“.

Norėdami dirbti su šiame straipsnyje pateiktais kodų pavyzdžiais, sistemoje turite būti įdiegę „Visual Studio 2019“. Jei dar neturite kopijos, galite atsisiųsti „Visual Studio 2019“ čia.

„Visual Studio“ sukurkite ASP.NET Core MVC projektą

Pirmiausia sukurkime „ASP.NET Core“ projektą „Visual Studio 2019“. Darant prielaidą, kad „Visual Studio 2019“ yra įdiegta jūsų sistemoje, atlikite toliau nurodytus veiksmus, kad sukurtumėte naują „ASP.NET Core“ projektą „Visual Studio“.

  1. Paleiskite „Visual Studio IDE“.
  2. Spustelėkite „Sukurti naują projektą“.
  3. Lange „Kurti naują projektą“ iš rodomų šablonų sąrašo pasirinkite „ASP.NET Core Web Application“.
  4. Spustelėkite Pirmyn.
  5. Lange „Konfigūruoti naują projektą“ nurodykite naujo projekto pavadinimą ir vietą.
  6. Pasirinktinai pažymėkite žymimąjį laukelį „Įdėti sprendimą ir projektą tame pačiame kataloge“.
  7. Spustelėkite Sukurti.
  8. Kitame rodomame lange „Sukurti naują ASP.NET pagrindinę žiniatinklio programą“ viršuje esančiame išskleidžiamajame sąraše pasirinkite .NET Core kaip vykdymo laiką ir ASP.NET Core 2.2 (ar naujesnę). Aš naudosiu ASP.NET Core 3.0.
  9. Norėdami sukurti naują ASP.NET Core MVC programą, kaip projekto šabloną pasirinkite „Web Application (Model-View-Controller)“.
  10. Įsitikinkite, kad nepažymėti žymės langeliai „Įgalinti„ Docker “palaikymą“ ir „Konfigūruoti HTTPS“, nes čia nenaudosime tų funkcijų.
  11. Įsitikinkite, kad autentifikavimas nustatytas kaip „Nėra autentifikavimo“, nes mes taip pat nenaudosime autentifikavimo.
  12. Spustelėkite Sukurti.

Atlikę šiuos veiksmus, „Visual Studio“ turėtumėte sukurti naują ASP.NET Core MVC projektą. Šį projektą naudosime iliustruodami „Excel“ duomenų eksportavimą toliau pateiktose skiltyse.

Įdiekite „ClosedXML NuGet“ paketą

Jei norite eksportuoti duomenis į „Excel“, galite rinktis iš kelių bibliotekų. Vienas iš jų pavadintas „ClosedXML“. Šį paketą galite įdiegti naudodami „NuGet“ paketų tvarkytuvę „Visual Studio 2019 IDE“ arba vykdydami šią komandą „NuGet“ paketų tvarkyklės konsolėje:

„Install-Package ClosedXML“

Eksportuoti duomenis kaip CSV failą iš ASP.NET Core 3.0

Duomenis eksportuoti kaip kableliais atskirtą (CSV) failą yra paprasta. Norėdami tai pasiekti, galite pasinaudoti „NuGet“ paketo, pvz., „CsvExport“ ar „AWright18.SimpleCSVExporter“, pranašumais arba galite tai padaryti rankiniu būdu. Siekdami paprastumo, CSV failą sugeneruosime rankiniu būdu. Apsvarstykite šią klasę, pavadintą Autorius.

visuomenės klasės Autorius

{

public int Id {get; rinkinys; }

public string FirstName {get; rinkinys; }

vieša eilutė Pavardė {get; rinkinys; }

}

Tada galite užpildyti duomenis į autorių sąrašą, kaip parodyta toliau pateiktame kodo fragmente.

Sąrašo autoriai = naujas sąrašas

{

naujas autorius {Id = 1, FirstName = "Joydip", LastName = "Kanjilal"},

naujas autorius {Id = 2, Vardas = "Steve", Pavardė = "Smith"},

naujas autorius {Id = 3, Vardas = "Anand", Pavardė = "Narayaswamy"}

};

Šis kodo fragmentas rodo, kaip galite sugeneruoti CSV failą valdiklio veiksmo metodu.

public IActionResult DownloadCommaSeperatedFile ()

{

bandyti

    {

StringBuilder stringBuilder = new StringBuilder ();

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

foreach (var autorius autoriams)

       {

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

{autorius.Vardas}, {autorius.Pavardė} ");

       }

grąžinti failą (Encoding.UTF8.GetBytes

(stringBuilder.ToString ()), "tekstas / csv", "autoriai.csv");

    }

pagauti

    {

grąžinimo klaida ();

    }

}

Eksportuoti duomenis kaip XLSX failą į ASP.NET Core 3.0

„Excel“ darbaknygę sudaro keli darbalapiai. „Excel“ darbaknygę galite sukurti naudodami šį kodą.

var darbaknygė = new XLWorkbook ();

Tada galite pasinaudoti „IXLWorkSheet“ sąsaja, kad sukurtumėte ir pridėtumėte darbalapius prie darbaknygės, kaip parodyta žemiau.

„IXLWorksheet“ darbalapis = darbaknygė.Worksheets.Add („Autoriai“);

darbalapis.Ląstelė (1, 1) .Vertė = "Id";

darbalapis.Ląstelė (1, 2) .Vertė = "Vardas";

darbalapis.Ląstelė (1, 3) .Vertė = "Pavardė";

for (int indeksas = 1; rodyklė <= autoriai. Skaičius; rodyklė ++)

{

darbalapis.Ląstelė (indeksas + 1, 1) .Vertė = autoriai [rodyklė - 1] .Id;

darbalapis.Ląstelė (rodyklė + 1, 2) .Vertė = autoriai [rodyklė - 1] .Vardas;

darbalapis.Ląstelė (rodyklė + 1, 3) .Vertė = autoriai [rodyklė - 1] .Pavardė;

}

Galiausiai galite išsaugoti darbaknygę kaip atminties srautą ir tada sukurti „FileContentResult“ egzempliorių, kaip parodyta žemiau.

naudojant (var stream = new MemoryStream ())

{

darbaknygė.SaveAs (srautas);

var content = srautas.ToArray ();

grąžinti failą (content, contentType, fileName);

}

Atsisiųskite „Excel“ dokumentą iš ASP.NET Core 3.0

Čia yra visas veiksmo metodo, kurį galima naudoti norint atsisiųsti „Excel“ dokumentą, šaltinio kodas.

public IActionResult DownloadExcelDocument ()

        {

eilutės contentType = "application / vnd.openxmlformats-

officedocument.spreadsheetml.sheet ";

string fileName = "autoriai.xlsx";

bandyti

            {

naudojant (var darbaknygė = new XLWorkbook ())

                {

IXLWorksheet darbalapis =

darbaknygė.Worksheets.Add ("Autoriai");

darbalapis.Ląstelė (1, 1) .Vertė = "Id";

darbalapis.Ląstelė (1, 2) .Vertė = "Vardas";

darbalapis.Ląstelė (1, 3) .Vertė = "Pavardė";

for (int indeksas = 1; rodyklė <= autoriai. Skaičius; rodyklė ++)

                    {

darbalapis.Ląstelė (rodiklis + 1, 1). Vertė =

autoriai [rodyklė - 1] .Id;

darbalapis.Ląstelė (rodiklis + 1, 2). Vertė =

autoriai [rodyklė - 1] .Vardas;

darbalapis.Ląstelė (rodiklis + 1, 3). Vertė =

autoriai [rodyklė - 1] .Pavardė;

                    }

naudojant (var stream = new MemoryStream ())

                    {

darbaknygė.SaveAs (srautas);

var content = srautas.ToArray ();

grąžinti failą (content, contentType, fileName);

                    }

                }

            }

sugavimas (ex išimtis)

            {

grąžinimo klaida ();

            }

        }

Nors šiame straipsnyje mes naudojome „ClosedXML“, yra keletas kitų paketų, skirtų „Excel“ duomenims skaityti, rašyti ir manipuliuoti „ASP.NET Core“, įskaitant „EPPlus“ ir „NPOI“. Daugiau apie „ClosedXML“ galite sužinoti „GitHub“ svetainėje //github.com/ClosedXML/ClosedXML. „Excel“ duomenų importavimą ASP.NET Core programoje aptarsiu būsimame įraše čia.

Kaip padaryti daugiau naudojant ASP.NET ir ASP.NET Core:

  • Kaip naudoti atminties talpyklą ASP.NET Core
  • Kaip tvarkyti klaidas ASP.NET žiniatinklio API
  • Kaip perduoti kelis parametrus žiniatinklio API valdiklio metodams
  • Kaip registruoti užklausos ir atsakymo metaduomenis ASP.NET žiniatinklio API
  • Kaip dirbti su „HttpModules“ ASP.NET
  • Išplėstinė ASP.NET „Core Web API“ versijų versija
  • Kaip naudoti priklausomybės injekciją ASP.NET Core
  • Kaip dirbti su sesijomis ASP.NET
  • Kaip dirbti su HTTPHandleriais sistemoje ASP.NET
  • Kaip naudoti „IHostedService“ ASP.NET Core
  • Kaip vartoti WCF SOAP paslaugą ASP.NET Core
  • Kaip pagerinti ASP.NET Core programų veikimą
  • Kaip suvartoti ASP.NET Core Web API naudojant „RestSharp“
  • Kaip dirbti su registravimu ASP.NET Core
  • Kaip naudoti „MediatR“ ASP.NET Core
  • Kaip dirbti su seanso būsena ASP.NET Core
  • Kaip naudoti „Nancy“ ASP.NET Core
  • Supraskite parametrų susiejimą ASP.NET žiniatinklio API
  • Kaip įkelti failus į ASP.NET Core MVC
  • Kaip įdiegti visuotinį išimčių tvarkymą ASP.NET Core Web API
  • Kaip atlikti sveikatos patikrinimus ASP.NET Core
  • Geriausia ASP.NET talpyklos talpinimo praktika
  • Kaip naudoti „Apache Kafka“ pranešimus .NET
  • Kaip įgalinti CORS savo žiniatinklio API
  • Kada naudoti „WebClient“, palyginti su „HttpClient“ ir „HttpWebRequest“
  • Kaip dirbti su „Redis Cache“ .NET
  • Kada .NET naudoti „Task.WaitAll“ ir „Task.WhenAll“