Cara mengekspor data ke Excel di ASP.NET Core 3.0

Saat membuat aplikasi web, Anda sering kali perlu mengimpor atau mengekspor data dari atau ke dokumen Word atau Excel. Ada beberapa cara untuk mencapai ini, dan banyak paket NuGet untuk bekerja dengan Word atau Excel. Artikel ini membahas bagaimana kami dapat bekerja dengan ClosedXML di ASP.NET Core untuk mengekspor data ke Excel.

Untuk bekerja dengan contoh kode yang disediakan dalam artikel ini, Anda harus menginstal Visual Studio 2019 di sistem Anda. Jika Anda belum memiliki salinannya, Anda dapat mengunduh Visual Studio 2019 di sini.

Membuat proyek ASP.NET Core MVC di Visual Studio

Pertama, mari buat proyek ASP.NET Core di Visual Studio 2019. Dengan asumsi Visual Studio 2019 diinstal di sistem Anda, ikuti langkah-langkah yang diuraikan di bawah ini untuk membuat proyek ASP.NET Core baru di Visual Studio.

  1. Luncurkan Visual Studio IDE.
  2. Klik "Buat proyek baru".
  3. Di jendela "Buat proyek baru", pilih "Aplikasi Web Inti ASP.NET" dari daftar templat yang ditampilkan.
  4. Klik Next.
  5. Di jendela "Configure your new project", tentukan nama dan lokasi untuk proyek baru tersebut.
  6. Secara opsional, pilih kotak centang "Tempatkan solusi dan proyek dalam direktori yang sama".
  7. Klik Buat.
  8. Di jendela "Buat Aplikasi Web ASP.NET Core Baru" yang ditampilkan berikutnya, pilih .NET Core sebagai runtime dan ASP.NET Core 2.2 (atau yang lebih baru) dari daftar drop-down di bagian atas. Saya akan menggunakan ASP.NET Core 3.0. 
  9. Pilih "Aplikasi Web (Model-View-Controller)" sebagai template proyek untuk membuat aplikasi ASP.NET Core MVC baru. 
  10. Pastikan kotak centang "Aktifkan Dukungan Docker" dan "Konfigurasi untuk HTTPS" tidak dicentang karena kami tidak akan menggunakan fitur tersebut di sini.
  11. Pastikan Autentikasi disetel ke "Tanpa Autentikasi" karena kami juga tidak akan menggunakan autentikasi.
  12. Klik Buat. 

Mengikuti langkah-langkah berikut ini akan membuat proyek ASP.NET Core MVC baru di Visual Studio. Kami akan menggunakan proyek ini untuk mengilustrasikan mengekspor data untuk Excel pada bagian di bawah ini.

Instal paket ClosedXML NuGet 

Ada beberapa pustaka untuk dipilih jika Anda ingin mengekspor data ke Excel. Salah satunya bernama ClosedXML. Anda dapat menginstal paket ini melalui manajer paket NuGet di dalam Visual Studio 2019 IDE, atau dengan menjalankan perintah berikut di konsol manajer paket NuGet:

Instal-Paket ClosedXML

Ekspor data sebagai file CSV dari ASP.NET Core 3.0

Mengekspor data sebagai file yang dipisahkan koma (CSV) itu sederhana. Anda dapat memanfaatkan paket NuGet seperti CsvExport atau AWright18.SimpleCSVExporter untuk mencapai ini, atau Anda dapat melakukannya secara manual. Demi kesederhanaan, kami akan membuat file CSV secara manual. Pertimbangkan kelas berikut bernama Penulis.

kelas publik Penulis

{

  public int Id {get; set; }

  string publik FirstName {get; set; }

  string publik LastName {get; set; }

}

Selanjutnya, Anda dapat mengisi data ke dalam daftar penulis seperti yang ditunjukkan pada potongan kode yang diberikan di bawah ini.

Penulis daftar = Daftar baru

{

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

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

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

};

Cuplikan kode berikut menunjukkan bagaimana Anda dapat membuat file CSV dalam metode tindakan pengontrol Anda.

public IActionResult DownloadCommaSeperatedFile ()

{

    mencoba

    {

       StringBuilder stringBuilder = new StringBuilder ();

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

       foreach (penulis var di penulis)

       {

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

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

       }

      mengembalikan File (Encoding.UTF8.GetBytes

      (stringBuilder.ToString ()), "teks / csv", "penulis.csv");

    }

    menangkap

    {

       kembali Kesalahan ();

    }

}

Ekspor data sebagai file XLSX di ASP.NET Core 3.0

Buku kerja di Excel terdiri dari beberapa lembar kerja. Anda dapat membuat buku kerja Excel menggunakan kode berikut ini.

var workbook = new XLWorkbook ();

Anda kemudian dapat memanfaatkan antarmuka IXLWorkSheet untuk membuat dan menambahkan lembar kerja ke buku kerja seperti yang diperlihatkan di bawah ini.

IXLWorksheet worksheet = workbook.Worksheets.Add ("Penulis");

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

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

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

untuk (int index = 1; index <= author.Count; index ++)

{

   worksheet.Cell (indeks + 1, 1) .Value = penulis [indeks - 1] .Id;

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

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

}

Terakhir, Anda bisa menyimpan buku kerja sebagai aliran memori dan kemudian membuat contoh FileContentResult seperti yang diperlihatkan di bawah ini.

menggunakan (var stream = new MemoryStream ())

{

     workbook.SaveAs (aliran);

     var content = stream.ToArray ();

     mengembalikan File (konten, contentType, fileName);

}

Unduh dokumen Excel di ASP.NET Core 3.0

Berikut ini kode sumber lengkap dari metode tindakan yang dapat digunakan untuk mengunduh dokumen Excel.

public IActionResult DownloadExcelDocument ()

        {

            string contentType = "application / vnd.openxmlformats-

            officedocument.spreadsheetml.sheet ";

            string fileName = "penulis.xlsx";

            mencoba

            {

                menggunakan (var workbook = new XLWorkbook ())

                {

                    Lembar kerja IXLWorksheet =

                    workbook.Worksheets.Add ("Penulis");

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

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

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

                    untuk (int index = 1; index <= author.Count; index ++)

                    {

                        worksheet.Cell (index + 1, 1) .Value =

                        penulis [indeks - 1] .Id;

                        worksheet.Cell (index + 1, 2) .Value =

                        penulis [indeks - 1] .FirstName;

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

                        penulis [indeks - 1] .LastName;

                    }

                    menggunakan (var stream = new MemoryStream ())

                    {

                        workbook.SaveAs (aliran);

                        var content = stream.ToArray ();

                        mengembalikan File (konten, contentType, fileName);

                    }

                }

            }

            catch (Exception ex)

            {

                kembali Kesalahan ();

            }

        }

Meskipun kami telah menggunakan ClosedXML dalam artikel ini, ada beberapa paket lain untuk membaca, menulis, dan memanipulasi data Excel di ASP.NET Core termasuk EPPlus dan NPOI. Anda dapat mempelajari lebih lanjut tentang ClosedXML di GitHub di //github.com/ClosedXML/ClosedXML. Saya akan membahas mengimpor data Excel dalam aplikasi ASP.NET Core di posting mendatang di sini.

Cara melakukan lebih banyak di ASP.NET dan ASP.NET Core:

  • Cara menggunakan cache dalam memori di ASP.NET Core
  • Bagaimana menangani kesalahan di ASP.NET Web API
  • Cara meneruskan beberapa parameter ke metode pengontrol API Web
  • Cara log permintaan dan respons metadata di ASP.NET Web API
  • Cara bekerja dengan HttpModules di ASP.NET
  • Versi lanjutan dalam ASP.NET Core Web API
  • Cara menggunakan injeksi ketergantungan di ASP.NET Core
  • Cara bekerja dengan sesi di ASP.NET
  • Bagaimana bekerja dengan HTTPHandlers di ASP.NET
  • Cara menggunakan IHostedService di ASP.NET Core
  • Cara menggunakan layanan sabun WCF di ASP.NET Core
  • Cara meningkatkan kinerja aplikasi ASP.NET Core
  • Cara menggunakan ASP.NET Core Web API menggunakan RestSharp
  • Cara bekerja dengan masuk ke ASP.NET Core
  • Cara menggunakan MediatR di ASP.NET Core
  • Cara bekerja dengan status sesi di ASP.NET Core
  • Cara menggunakan Nancy di ASP.NET Core
  • Pahami pengikatan parameter di ASP.NET Web API
  • Cara mengupload file di ASP.NET Core MVC
  • Bagaimana menerapkan penanganan pengecualian global di ASP.NET Core Web API
  • Cara menerapkan pemeriksaan kesehatan di ASP.NET Core
  • Praktik terbaik dalam caching di ASP.NET
  • Cara menggunakan perpesanan Apache Kafka di .NET
  • Cara mengaktifkan CORS di API Web Anda
  • Kapan menggunakan WebClient vs. HttpClient vs. HttpWebRequest
  • Cara bekerja dengan Redis Cache di .NET
  • Kapan menggunakan Task.WaitAll vs. Task.WhenAll di .NET