รวบรวม Code ต่างๆนานา ที่เคยพบเจอมาจากประสบการณ์

UNDERGROUND PROGRAMMER PRESENT

วันเสาร์ที่ 26 สิงหาคม พ.ศ. 2560

VB.NET Code#7 Export to Excel from DataTable

มันก็แสดงผมได้ดีนะ งั้นขอให้เอาออกมาเป็นไฟล์ Excel ให้หน่อยได้ไหม? 😩

        ก็นั่นละคำถามประจำ เขียนโปรแกรมเสร็จแสดงผลเรียบร้อย ทุกอย่างถูก ข้อมูลถูก แต่ก็อย่างว่าละ ดูอย่างเดียวมันคงไม่สนุก อยากเอาข้อมูลที่ได้ไปทำอย่างอื่น
        ข้อมูลแบบตารางส่วนใหญ่ก็คงแสดงใน DataGridView มันก็แน่ละเพื่อความรวดเร็วก็ต้องผูกกับ DataTable นี้ละ (มันก็คงจะมีบ้างละนะที่ใช้ Loop for วนเพิ่มทีละรายการเนี๊ยะ 😩) ก็อย่างที่บอกวันนี้เราจะมาเล่าเกี่ยวกับการนำข้อมูลที่แสดงผลบน DataGridView โดยที่มี DataTable ผูกอยู่ ส่งออกมาในไฟล์ Excel กัน (ที่เรียกว่า Export นั่นละ)


มันแสดงผลแบบนี้ ให้เอาออกมาให้เหมือนเลยนะ  


อืม....พิจารณาดูแล้วมันก็น่าจะไม่มีปัญหาอะไร แต่เดี๋ยวก่อน....อ้าวส่วนของ Column มันแสดงทั้งวันที่และวัันในสัปดาห์ด้วยนี้หว่า เอาไงดีไหนไปดู DataTable ดิ....


โอเค ! ข้อมูลใน DataTable เป็นแบบนี้ งั้นสิ่งที่ต้องหาเพิ่มเพื่อนำไปแสดงผลคือ วันในสัปดาห์ ใช่ม่ะ จัดไป...

** นิดหนึ่ง ข้อมูลใน DataTable นั้นเราสามารถจัดการได้นะ หรือแม้แต่การสร้างขึ้นมา ถ้ายัง งงๆ อยู่ก็ลองไปอ่านในบทความ DataTable ดูก่อนก็ได้นะ

1.การ References กับ Microsoft Excel

แน่นอนเลยว่าการเขียนโปรแกรมติดต่อกับ Application ภายนอกนั้น เราต้องทำความรู้จักกับมันเสียก่อน (Add References ) ซึ่งเราก็ทำการเพิ่มมันเข้ามาสะนะ
Microsoft.Office.Interop.Excel

2.การเรียกใช้ Namespaces เกี่ยวกับวันที่ และการกำหนดปลายทางการส่งออกไฟล์

แน่นอนเลยว่าตามโจทย์ข้างบนนั้นต้องมีการดำเนินการเกี่ยวกับวันที่ ฉะนั้นมันก็จะมีบาง Method เกี่ยวกับวันที่...ที่เราต้องเพิ่งเจ้า   Namespaces Globalization (ก็นำมันเข้ามาใช้งานสะ)

Imports System.Globalization

ส่่วนต่อมาก็คงต้องสร้างส่วนรับข้อมูล ที่จัดเก็บปลายทางของไฟล์ที่เราจะส่งออกไป ซึ่งเราจะใช้บริการของเจ้า Component FolderBrowserDialog กัน
3. Export และหาวันของสัปดาห์
ทำการสร้างตัวแปรเพื่ออ้างอิงถึง Microsoft Excel แล้วก็ทำการตรวจสอบว่าในเครื่องที่ใช้งานอยู่นั้นได้มีการติดตั้งไว้หรือไม่?  อีกสร้างก็หาตัวแปรมาเก็บ Path save file ที่ได้ทำการรับเข้ามาก่อนหน้านี้ด้วยนะ

ในส่วนนี้ก็จะเป็นส่วนที่วาดหัว  Column ละนะ เอาแบบง่ายๆ ก็วนไปสิ จนครบจำนวน Column ใน DataTable นั่นแหละ (ตัวแปร dt) 
----
WEEKSTR() อันนี้จะเก็บวันแบบย่อในสัปดาห์เอาไว้นะเก็บในรูปแบบของ Array นี้ละ จากนั้นก็วนวันตามหัว Column ใน DataTable ไป (มันเริ่มที่ column ที่ 6)  
เราจะใช้ Method ของ Date ที่ชื่อ DayOfWeek เพื่อหาตำแหน่งของวันในสัปดาห์ (0= วันอาทิตย์...) จากนั้นก็อ่านค่าจาก Array แล้วก็วาดลงไป...
หลังจากที่ได้ทำการวาดในส่วนของ Column เรียบร้อยแล้วจากนี้ก็จะเป็นส่วนของ แถว (Row)บ้างละนะ ก็วาดไปจนครบตามจำนวนแถวใน DataTable นั่นแหละ (สังเกตว่าจะมีการซ่อนกันของ  Loop นะ ความหมายก็คือ วาดทีละแถว (row)ไปทางขวา (column))

และสุดท้ายก็จะเป็นการ Save ลงปลายทางที่เราได้กำหนดไว้ข้างต้นละนะ (เมื่อเปิดใช้งานก็อย่าลืมปิดด้วยละ)

ผลลัพท์::

*** สำหรับการจัดรูปแบบพวกเส้นขอบ, จัดกลาง ซ้าย ขวา นั้น ถ้าหาใน Internet ไม่เจอจริงๆ ก็แนะนำให้ทำการแกะจาก Macro ของ  Excel เอานะ

**** อันนี้แถม มันคือค่า Index ของสีใน Excel
การใช้งานก็ใช้คำสั่ง 
  • Rang("A1").Font.ColorIndex = 1
  • Rang("A1").Interior.ColorIndex = 6
  • Rang("A1").Borders.ColorIndex = 23





1 ความคิดเห็น: