วิธีการส่งออกข้อมูลไปยัง Excel ใน ASP.NET Core 3.0

เมื่อสร้างเว็บแอปพลิเคชันคุณมักจะต้องนำเข้าหรือส่งออกข้อมูลจากหรือไปยังเอกสาร Word หรือ Excel มีหลายวิธีในการบรรลุเป้าหมายนี้และมีแพ็คเกจ NuGet มากมายสำหรับทำงานกับ Word หรือ Excel บทความนี้กล่าวถึงวิธีที่เราสามารถทำงานกับ ClosedXML ใน ASP.NET Core เพื่อส่งออกข้อมูลไปยัง Excel

ในการทำงานกับตัวอย่างโค้ดที่ให้ไว้ในบทความนี้คุณควรติดตั้ง Visual Studio 2019 ในระบบของคุณ หากคุณยังไม่มีสำเนาคุณสามารถดาวน์โหลด Visual Studio 2019 ได้ที่นี่

สร้างโครงการ ASP.NET Core MVC ใน Visual Studio

ก่อนอื่นมาสร้างโครงการ ASP.NET Core ใน Visual Studio 2019 สมมติว่ามีการติดตั้ง Visual Studio 2019 ในระบบของคุณให้ทำตามขั้นตอนที่ระบุไว้ด้านล่างเพื่อสร้างโครงการ ASP.NET Core ใหม่ใน Visual Studio

  1. เปิด Visual Studio IDE
  2. คลิกที่ "สร้างโครงการใหม่"
  3. ในหน้าต่าง“ สร้างโครงการใหม่” เลือก“ ASP.NET Core Web Application” จากรายการเทมเพลตที่แสดง
  4. คลิกถัดไป
  5. ในหน้าต่าง "กำหนดค่าโครงการใหม่ของคุณ" ระบุชื่อและตำแหน่งของโครงการใหม่
  6. อีกทางเลือกหนึ่งคือเลือกช่องทำเครื่องหมาย“ วางโซลูชันและโครงการในไดเรกทอรีเดียวกัน”
  7. คลิกสร้าง
  8. ในหน้าต่าง“ Create a New ASP.NET Core Web Application” ที่แสดงถัดไปให้เลือก. NET Core เป็นรันไทม์และ ASP.NET Core 2.2 (หรือใหม่กว่า) จากรายการดรอปดาวน์ที่ด้านบน ฉันจะใช้ ASP.NET Core 3.0 
  9. เลือก“ Web Application (Model-View-Controller)” เป็นเทมเพลตโครงการเพื่อสร้างแอปพลิเคชัน ASP.NET Core MVC ใหม่ 
  10. ตรวจสอบให้แน่ใจว่าไม่มีการเลือกช่องทำเครื่องหมาย "เปิดใช้งานการสนับสนุน Docker" และ "กำหนดค่าสำหรับ HTTPS" เนื่องจากเราจะไม่ใช้คุณลักษณะเหล่านั้นที่นี่
  11. ตรวจสอบให้แน่ใจว่าการรับรองความถูกต้องถูกตั้งค่าเป็น“ ไม่มีการพิสูจน์ตัวตน” เนื่องจากเราจะไม่ใช้การพิสูจน์ตัวตนด้วย
  12. คลิกสร้าง 

ทำตามขั้นตอนเหล่านี้ควรสร้างโครงการ ASP.NET Core MVC ใหม่ใน Visual Studio เราจะใช้โครงการนี้เพื่อแสดงข้อมูลการส่งออกสำหรับ Excel ในส่วนด้านล่าง

ติดตั้งแพ็คเกจ ClosedXML NuGet 

มีไลบรารีหลายแบบให้เลือกหากคุณต้องการส่งออกข้อมูลไปยัง Excel หนึ่งในนั้นชื่อว่า ClosedXML คุณสามารถติดตั้งแพคเกจนี้ผ่านตัวจัดการแพ็คเกจ NuGet ภายใน Visual Studio 2019 IDE หรือโดยดำเนินการคำสั่งต่อไปนี้ในคอนโซลตัวจัดการแพ็คเกจ NuGet:

ติดตั้งแพ็คเกจ ClosedXML

ส่งออกข้อมูลเป็นไฟล์ CSV จาก ASP.NET Core 3.0

การส่งออกข้อมูลเป็นไฟล์ที่คั่นด้วยจุลภาค (CSV) นั้นทำได้ง่าย คุณสามารถใช้ประโยชน์จากแพ็คเกจ NuGet เช่น CsvExport หรือ AWright18.SimpleCSVExporter เพื่อบรรลุเป้าหมายนี้หรือคุณสามารถทำได้ด้วยตนเอง เพื่อความง่ายเราจะสร้างไฟล์ CSV ด้วยตนเอง พิจารณาคลาสต่อไปนี้ชื่อผู้แต่ง

ผู้แต่งระดับสาธารณะ

{

  รหัส int สาธารณะ {get; ชุด; }

  สตริงสาธารณะ FirstName {get; ชุด; }

  สตริงสาธารณะ LastName {get; ชุด; }

}

จากนั้นคุณสามารถเติมข้อมูลลงในรายชื่อผู้เขียนดังที่แสดงในข้อมูลโค้ดที่ระบุด้านล่าง

ผู้เขียนรายการ = รายชื่อใหม่

{

    ผู้แต่งใหม่ {Id = 1, FirstName = "Joydip", LastName = "Kanjilal"},

    ผู้แต่งใหม่ {Id = 2, FirstName = "Steve", LastName = "Smith"},

    ผู้แต่งใหม่ {Id = 3, FirstName = "Anand", LastName = "Narayaswamy"}

};

ข้อมูลโค้ดต่อไปนี้แสดงวิธีสร้างไฟล์ CSV ในวิธีการดำเนินการของคอนโทรลเลอร์ของคุณ

ดาวน์โหลด IActionResult สาธารณะ CommaSeperatedFile ()

{

    ลอง

    {

       StringBuilder stringBuilder = ใหม่ StringBuilder ();

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

       foreach (ผู้เขียน var ในผู้เขียน)

       {

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

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

       }

      ส่งคืนไฟล์ (Encoding.UTF8.GetBytes

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

    }

    จับ

    {

       กลับข้อผิดพลาด ();

    }

}

ส่งออกข้อมูลเป็นไฟล์ XLSX ใน ASP.NET Core 3.0

สมุดงานใน Excel ประกอบด้วยแผ่นงานหลายแผ่น คุณสามารถสร้างสมุดงาน Excel โดยใช้รหัสต่อไปนี้

สมุดงาน var = XLWorkbook ใหม่ ();

จากนั้นคุณสามารถใช้ประโยชน์จากอินเทอร์เฟซ IXLWorkSheet เพื่อสร้างและเพิ่มเวิร์กชีตลงในสมุดงานดังที่แสดงด้านล่าง

แผ่นงาน IXLWorksheet = workbook.Worksheets.Add ("ผู้เขียน");

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

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

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

สำหรับ (int index = 1; index <= authors.Count; index ++)

{

   worksheet.Cell (ดัชนี + 1, 1) .Value = ผู้แต่ง [ดัชนี - 1] .Id;

   worksheet.Cell (ดัชนี + 1, 2) .Value = ผู้แต่ง [ดัชนี - 1] .FirstName;

   worksheet.Cell (ดัชนี + 1, 3) .Value = ผู้เขียน [ดัชนี - 1] .LastName;

}

สุดท้ายคุณสามารถบันทึกเวิร์กบุ๊กเป็นสตรีมหน่วยความจำจากนั้นสร้างอินสแตนซ์ FileContentResult ดังที่แสดงด้านล่าง

โดยใช้ (var stream = new MemoryStream ())

{

     workbook.SaveAs (สตรีม);

     เนื้อหา var = สตรีม. ToArray ();

     ส่งคืนไฟล์ (เนื้อหา contentType ชื่อไฟล์);

}

ดาวน์โหลดเอกสาร Excel ใน ASP.NET Core 3.0

นี่คือซอร์สโค้ดที่สมบูรณ์ของวิธีการดำเนินการที่สามารถใช้เพื่อดาวน์โหลดเอกสาร Excel

IActionResult สาธารณะดาวน์โหลด ExcelDocument ()

        {

            สตริง contentType = "application / vnd.openxmlformats-

            officedocument.spreadsheetml.sheet ";

            สตริง fileName = "authors.xlsx";

            ลอง

            {

                โดยใช้ (var workbook = new XLWorkbook ())

                {

                    แผ่นงาน IXLWorksheet =

                    workbook.Worksheets.Add ("ผู้เขียน");

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

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

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

                    สำหรับ (int index = 1; index <= authors.Count; index ++)

                    {

                        แผ่นงานเซลล์ (ดัชนี + 1, 1) .Value =

                        ผู้เขียน [ดัชนี - 1] .Id;

                        แผ่นงานเซลล์ (ดัชนี + 1, 2) ค่า =

                        ผู้เขียน [ดัชนี - 1]. FirstName;

                        แผ่นงานเซลล์ (ดัชนี + 1, 3) .Value =

                        ผู้เขียน [ดัชนี - 1] .LastName;

                    }

                    โดยใช้ (var stream = new MemoryStream ())

                    {

                        workbook.SaveAs (สตรีม);

                        เนื้อหา var = สตรีม. ToArray ();

                        ส่งคืนไฟล์ (เนื้อหา contentType ชื่อไฟล์);

                    }

                }

            }

            จับ (ยกเว้น)

            {

                กลับข้อผิดพลาด ();

            }

        }

ในขณะที่เราใช้ ClosedXML ในบทความนี้มีแพ็คเกจอื่น ๆ อีกมากมายสำหรับการอ่านเขียนและจัดการข้อมูล Excel ใน ASP.NET Core รวมถึง EPPlus และ NPOI คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ ClosedXML บน GitHub ได้ที่ //github.com/ClosedXML/ClosedXML ฉันจะพูดถึงการนำเข้าข้อมูล Excel ในแอปพลิเคชัน ASP.NET Core ในโพสต์ในอนาคตที่นี่

วิธีทำเพิ่มเติมใน ASP.NET และ ASP.NET Core:

  • วิธีใช้การแคชในหน่วยความจำใน ASP.NET Core
  • วิธีจัดการข้อผิดพลาดใน ASP.NET Web API
  • วิธีส่งพารามิเตอร์หลายตัวไปยังวิธีควบคุม Web API
  • วิธีบันทึกข้อมูลเมตาการร้องขอและการตอบกลับใน ASP.NET Web API
  • วิธีการทำงานกับ HttpModules ใน ASP.NET
  • การกำหนดเวอร์ชันขั้นสูงใน ASP.NET Core Web API
  • วิธีใช้การฉีดพึ่งพาใน ASP.NET Core
  • วิธีการทำงานกับเซสชันใน ASP.NET
  • วิธีทำงานกับ HTTPHandlers ใน ASP.NET
  • วิธีใช้ IHostedService ใน ASP.NET Core
  • วิธีการใช้บริการ WCF SOAP ใน ASP.NET Core
  • วิธีปรับปรุงประสิทธิภาพของแอปพลิเคชัน ASP.NET Core
  • วิธีใช้ ASP.NET Core Web API โดยใช้ RestSharp
  • วิธีการทำงานกับการเข้าสู่ระบบใน ASP.NET Core
  • วิธีใช้ MediatR ใน ASP.NET Core
  • วิธีการทำงานกับสถานะเซสชันใน ASP.NET Core
  • วิธีใช้ Nancy ใน ASP.NET Core
  • ทำความเข้าใจการผูกพารามิเตอร์ใน ASP.NET Web API
  • วิธีอัพโหลดไฟล์ใน ASP.NET Core MVC
  • วิธีใช้การจัดการข้อยกเว้นส่วนกลางใน ASP.NET Core Web API
  • วิธีใช้การตรวจสอบความสมบูรณ์ใน ASP.NET Core
  • แนวทางปฏิบัติที่ดีที่สุดในการแคชใน ASP.NET
  • วิธีใช้ Apache Kafka Messaging ใน. NET
  • วิธีเปิดใช้งาน CORS บน Web API ของคุณ
  • เมื่อใดควรใช้ WebClient กับ HttpClient เทียบกับ HttpWebRequest
  • วิธีการทำงานกับ Redis Cache ใน. NET
  • เมื่อใดควรใช้ Task.WaitAll กับ Task whenAll ใน. NET