Cara mengeksport data ke Excel dalam ASP.NET Core 3.0

Semasa membuat aplikasi web, anda sering kali perlu mengimport atau mengeksport data dari atau ke dokumen Word atau Excel. Terdapat beberapa cara untuk mencapainya, dan banyak pakej NuGet dapat digunakan dengan Word atau Excel. Artikel ini membincangkan bagaimana kita dapat bekerja dengan ClosedXML di ASP.NET Core untuk mengeksport data ke Excel.

Untuk bekerja dengan contoh kod yang disediakan dalam artikel ini, anda harus memasang Visual Studio 2019 di sistem anda. Sekiranya anda belum mempunyai salinannya, anda boleh memuat turun Visual Studio 2019 di sini.

Buat projek ASP.NET Core MVC di Visual Studio

Pertama, mari buat projek Teras ASP.NET di Visual Studio 2019. Dengan andaian Visual Studio 2019 dipasang di sistem anda, ikuti langkah-langkah yang digariskan di bawah untuk membuat projek Teras ASP.NET baru di Visual Studio.

  1. Lancarkan ID Studio Visual.
  2. Klik pada "Buat projek baru."
  3. Di tetingkap "Buat projek baru", pilih "Aplikasi Web Inti ASP.NET" dari senarai templat yang dipaparkan.
  4. Klik Seterusnya.
  5. Di tetingkap "Konfigurasikan projek baru Anda", tentukan nama dan lokasi untuk projek baru.
  6. Sebagai pilihan, pilih kotak centang "Penyelesaian tempat dan projek di direktori yang sama".
  7. Klik Buat.
  8. Dalam tetingkap "Buat Aplikasi Web Teras ASP.NET Teras" yang ditunjukkan di sebelahnya, pilih .NET Core sebagai runtime dan ASP.NET Core 2.2 (atau lebih baru) dari senarai juntai bawah di bahagian atas. Saya akan menggunakan ASP.NET Core 3.0. 
  9. Pilih "Aplikasi Web (Model-View-Controller)" sebagai templat projek untuk membuat aplikasi ASP.NET Core MVC baru. 
  10. Pastikan bahawa kotak centang "Aktifkan Docker Support" dan "Configure for HTTPS" tidak dicentang kerana kami tidak akan menggunakan fitur tersebut di sini.
  11. Pastikan Pengesahan disetel ke "Tanpa Pengesahan" kerana kami juga tidak akan menggunakan pengesahan.
  12. Klik Buat. 

Mengikuti langkah-langkah ini harus membuat projek ASP.NET Core MVC baru di Visual Studio. Kami akan menggunakan projek ini untuk menggambarkan pengeksportan data untuk Excel pada bahagian di bawah.

Pasang pakej ClosedXML NuGet 

Terdapat beberapa perpustakaan untuk dipilih sekiranya anda ingin mengeksport data ke Excel. Salah satunya bernama ClosedXML. Anda boleh memasang pakej ini sama ada melalui pengurus pakej NuGet di dalam Visual Studio 2019 IDE, atau dengan melaksanakan perintah berikut di konsol pengurus pakej NuGet:

Pasang-Pakej ClosedXML

Eksport data sebagai fail CSV dari ASP.NET Core 3.0

Mengeksport data sebagai fail yang dipisahkan koma (CSV) adalah mudah. Anda boleh memanfaatkan pakej NuGet seperti CsvExport atau AWright18.SimpleCSVExporter untuk mencapainya, atau anda boleh melakukannya secara manual. Demi kesederhanaan, kami akan menghasilkan fail CSV secara manual. Pertimbangkan kelas berikut bernama Pengarang.

Pengarang kelas awam

{

  id int awam {dapatkan; menetapkan; }

  rentetan awam FirstName {get; menetapkan; }

  rentetan umum LastName {get; menetapkan; }

}

Seterusnya, anda dapat mengisi data ke dalam senarai pengarang seperti yang ditunjukkan dalam coretan kod yang diberikan di bawah.

Senarai pengarang = Senarai baru

{

    Pengarang baru {Id = 1, FirstName = "Joydip", LastName = "Kanjilal"},

    Pengarang baru {Id = 2, FirstName = "Steve", LastName = "Smith"},

    Pengarang baru {Id = 3, FirstName = "Anand", LastName = "Narayaswamy"}

};

Coretan kod berikut menunjukkan bagaimana anda boleh menghasilkan fail CSV dalam kaedah tindakan pengawal anda.

awam IActionResult DownloadCommaSeperatedFile ()

{

    cuba

    {

       StringBuilder stringBuilder = StringBuilder baru ();

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

       foreach (var pengarang dalam pengarang)

       {

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

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

       }

      mengembalikan Fail (Encoding.UTF8.GetBytes

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

    }

    tangkap

    {

       Ralat kembali ();

    }

}

Eksport data sebagai fail XLSX dalam ASP.NET Core 3.0

Buku kerja dalam Excel terdiri daripada beberapa lembaran kerja. Anda boleh membuat buku kerja Excel menggunakan kod berikut.

buku kerja var = Buku XLWork baru ();

Anda kemudian boleh memanfaatkan antara muka IXLWorkSheet untuk membuat dan menambahkan lembaran kerja ke buku kerja seperti yang ditunjukkan di bawah.

Lembaran kerja IXLWorksheet = buku kerja.Worksheets.Add ("Pengarang");

lembaran kerja.Cell (1, 1) .Nilai = "Id";

lembaran kerja.Cell (1, 2). Nilai = "FirstName";

lembaran kerja.Cell (1, 3) .Nilai = "LastName";

untuk (indeks int = 1; indeks <= pengarang. Jumlah; indeks ++)

{

   lembaran kerja.Cell (indeks + 1, 1). Nilai = pengarang [indeks - 1] .Id;

   lembaran kerja.Cell (indeks + 1, 2). Nilai = pengarang [indeks - 1] .Nama Pertama;

   lembaran kerja.Cell (indeks + 1, 3). Nilai = pengarang [indeks - 1] .Nama Akhir;

}

Terakhir, anda dapat menyimpan buku kerja sebagai aliran memori dan kemudian membuat contoh FileContentResult seperti yang ditunjukkan di bawah.

menggunakan (var stream = MemoryStream baru ())

{

     buku kerja.SaveAs (aliran);

     var content = stream.ToArray ();

     mengembalikan Fail (content, contentType, fileName);

}

Muat turun dokumen Excel dalam ASP.NET Core 3.0

Berikut adalah kod sumber lengkap kaedah tindakan yang boleh digunakan untuk memuat turun dokumen Excel.

awam IActionResult DownloadExcelDocument ()

        {

            string contentType = "aplikasi / vnd.openxml format-

            officedocument.spreadsheetml.sheet ";

            string fileName = "author.xlsx";

            cuba

            {

                menggunakan (buku kerja var = Buku XLWork baru ())

                {

                    Lembaran kerja IXLWorksheet =

                    buku kerja.Worksheets.Add ("Pengarang");

                    lembaran kerja.Cell (1, 1) .Nilai = "Id";

                    lembaran kerja.Cell (1, 2). Nilai = "FirstName";

                    lembaran kerja.Cell (1, 3) .Nilai = "LastName";

                    untuk (indeks int = 1; indeks <= pengarang. Jumlah; indeks ++)

                    {

                        lembaran kerja.Cell (indeks + 1, 1). Nilai =

                        pengarang [indeks - 1] .Id;

                        lembaran kerja.Cell (indeks + 1, 2). Nilai =

                        pengarang [indeks - 1] .Nama Pertama;

                        lembaran kerja.Cell (indeks + 1, 3). Nilai =

                        pengarang [indeks - 1] .LastName;

                    }

                    menggunakan (var stream = MemoryStream baru ())

                    {

                        buku kerja.SaveAs (aliran);

                        var content = stream.ToArray ();

                        mengembalikan Fail (content, contentType, fileName);

                    }

                }

            }

            tangkapan (Pengecualian ex)

            {

                Ralat kembali ();

            }

        }

Walaupun kami telah menggunakan ClosedXML dalam artikel ini, terdapat beberapa pakej lain untuk membaca, menulis, dan memanipulasi data Excel di ASP.NET Core termasuk EPPlus dan NPOI. Anda boleh mengetahui lebih lanjut mengenai ClosedXML di GitHub di //github.com/ClosedXML/ClosedXML. Saya akan membincangkan pengimportan data Excel dalam aplikasi Core ASP.NET dalam catatan yang akan datang di sini.

Cara melakukan lebih banyak perkara dalam ASP.NET dan ASP.NET Core:

  • Cara menggunakan cache dalam memori di ASP.NET Core
  • Cara menangani ralat dalam API Web ASP.NET
  • Cara menyampaikan beberapa parameter ke kaedah pengawal API Web
  • Cara log metadata permintaan dan respons di API Web ASP.NET
  • Cara bekerja dengan HttpModules di ASP.NET
  • Versi lanjutan dalam ASP.NET Core Web API
  • Cara menggunakan suntikan kebergantungan dalam ASP.NET Core
  • Cara bekerja dengan sesi di ASP.NET
  • Cara bekerja dengan HTTPHandlers di ASP.NET
  • Cara menggunakan IHostedService dalam ASP.NET Core
  • Cara menggunakan perkhidmatan WCF SOAP di ASP.NET Core
  • Cara meningkatkan prestasi aplikasi ASP.NET Core
  • Cara menggunakan API Web Teras ASP.NET menggunakan RestSharp
  • Cara bekerja dengan log masuk di ASP.NET Core
  • Cara menggunakan MediatR dalam ASP.NET Core
  • Cara bekerja dengan keadaan sesi di ASP.NET Core
  • Cara menggunakan Nancy di ASP.NET Core
  • Fahami pengikatan parameter dalam ASP.NET Web API
  • Cara memuat naik fail dalam ASP.NET Core MVC
  • Cara melaksanakan pengendalian pengecualian global dalam ASP.NET Core Web API
  • Cara melaksanakan pemeriksaan kesihatan di ASP.NET Core
  • Amalan terbaik dalam membuat cache di ASP.NET
  • Cara menggunakan pesanan Apache Kafka di .NET
  • Cara mengaktifkan CORS pada API Web anda
  • Bila hendak menggunakan WebClient vs. HttpClient vs. HttpWebRequest
  • Cara bekerjasama dengan Redis Cache di .NET
  • Bila hendak menggunakan Task.WaitAll vs. Task.WhenAll in .NET