Load *.csv to DataGridView


โดย: nano

ใช้กับ: VS2008, WinApp.(C#)

 

CSV ย่อมาจาก Comma Separated Value

*.csv เป็นรูปแบบของ Text แบบหนึ่ง ที่มีการใช้สัญลักษณ์จุลภาค(,) มาเป็นตัวกั้นเพื่อแบ่งข้อมูลในไฟล์ออกเป็นฟิลด์ (fild) ซึ่งสามารถเปิดด้วย notepad หรือ text editor ไดๆ หรือเปิดด้วย Excel

เรามาเขียนแอพลลิเคชันเพื่อ Load ข้อมูล (*.csv) ไปแสดงบน DataGridView กันครับ:

 

ตัวอย่าง หน้าจอ Load ข้อมูล (*.csv) ด้วย DataGridView เป็นดังรูปที่ 1

1 2

รูปที่ 1: หน้าจอตัวอย่าง Load ข้อมูล (*.csv) ไปแสดงบน DataGridView

 

ตัวอย่างข้อมูล *.csv บน DataGridView ดังรูปที่ 2

3

รูปที่ 2: ข้อมูล *.csv บน DataGridView

 

เทียบเคียงข้อมูล *.csv บน DataGridView , Notepad และ Excel ดังรูปที่ 3

4

รูปที่ 3: เปรียบข้อมูลเมื่อเปิดด้วยโปรแกรมต่างๆ

 

Code: C#:

using System.Data.OleDb;
using System.IO;

//…
//…


       
private void button1_Click(object sender, EventArgs e)
       
{
           
OpenFileDialog ofd = new OpenFileDialog();
           
//Filter เฉพาะ Text และ csv ไฟล์
            ofd.Filter = "*Text files(*.txt)|*.csv|All files(*.*)|*.*";

          
           
string _path = "";
           
string _filenname = "";

            DataTable dt = new DataTable();
           
if (ofd.ShowDialog() == DialogResult.OK)
           
{
               
//ดึงพาธของไฟล์ csv มาเก็บไว้ที่ตัวแปร _path
                _path = Path.GetDirectoryName(ofd.FileName);

               
//ดึงเฉพาะชื่อไฟล์ (*.scv) มาเก็บไว้ที่ตัวแปร _filenname
                _filenname = Path.GetFileName(ofd.FileName);

                //แสดงป้ายชื่อพาธเต็มของไฟล์ (*.csv)
                label1.Text = ofd.FileName;

                //connection string โยนพาธไฟล์ (*.csv) เข้าไปที่ [Source] ตามที่ผู้ใช้งานเลือก จาก OpenFileDialog
               
//Extended Properties:
               
//  HDR=YES หมายความว่าให้แสดงข้อมูลในไฟล์ (*.csv) บรรทัดแรกเป็นชื่อ Column
               
//  HDR=NO หมายความว่า ให้ถือบรรทัดแรกเป็นเนื้อของข้อมูล และให้แทน Column ด้วย F1,F2…ไปเรื่อยๆตามจำนวน Column ของข้อมูล
                string conString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + _path +@";Extended Properties=""Text;HDR=YES;FMT=Delimited""";

               
OleDbConnection conn = new OleDbConnection(conString);
               
//โยนชื่อเฉพาะชื่อไฟล์ เข้าไปใน Sql statement
                OleDbDataAdapter da = new OleDbDataAdapter(@"Select * from " + _filenname, conn);

              
               
//บรรจุ(Fill) ข้อมูลให้ DataTable (dt)
                da.Fill(dt);

                //กำหนด DataTable (dt) ให้เป็นแหล่งข้อมูลของ dataGridView1
                dataGridView1.DataSource = dt;

            }

        }

//…
//…

 

Code:VB.Net

 

Imports System.Data.OleDb
Imports System.IO

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       
Dim ofd As New OpenFileDialog()
       
‘Filter เฉพาะ Text และ csv ไฟล์
        ofd.Filter =
"All file(*.txt,*.scv)|*.txt;*.csv|Text files(*.txt)|*.txt|CSV (*.csv)|*.csv"
       
Dim _path As String = ""
       
Dim _filenname As String =
""

        Dim dt As New DataTable()
       
If ofd.ShowDialog() = DialogResult.OK Then
           
‘ดึงพาธของไฟล์ csv มาเก็บไว้ที่ตัวแปร _path
            _path = Path.GetDirectoryName(ofd.FileName)

           
‘ดึงเฉพาะชื่อไฟล์ (*.scv) มาเก็บไว้ที่ตัวแปร _filenname
            _filenname = Path.GetFileName(ofd.FileName)

            ‘แสดงป้ายชื่อพาธเต็มของไฟล์ (*.csv)
            Label1.Text = ofd.FileName

            ‘connection string โยนพาธไฟล์ (*.csv) เข้าไปที่ [Source] ตามที่ผู้ใช้งานเลือก จาก OpenFileDialog
           
‘Extended Properties:
           
‘ HDR=YES หมายความว่าให้แสดงข้อมูลในไฟล์ (*.csv) บรรทัดแรกเป็นชื่อ Column
           
‘ HDR=NO หมายความว่า ให้ถือบรรทัดแรกเป็นเนื้อของข้อมูล และให้แทน Column ด้วย F1,F2…ไปเรื่อยๆตามจำนวน Column ของข้อมูล
            Dim conString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + _path +
";Extended Properties=""Text;HDR=YES;FMT=Delimited"""
           
Dim conn As New OleDbConnection(conString)

           
‘โยนชื่อเฉพาะชื่อไฟล์ เข้าไปใน Sql statement
            Dim da As New OleDbDataAdapter("Select * from " + _filenname, conn)

            ‘บรรจุ(Fill) ข้อมูลให้ DataTable (dt)
            da.Fill(dt)

            ‘กำหนด DataTable (dt) ให้เป็นแหล่งข้อมูลของ dataGridView1
           
DataGridView1.DataSource = dt
       
End If

    End Sub


Download Source code(C#):

Download Source code (VB.Net):

 

เกี่ยวกับ

Nuchit Atjanawat is a Microsoft MVP, GreatFriends Community Leader, WindowsITPro Columnist(Mr.Nano), Silverlight Business Application Instructor, Speaker in various Microsoft events, Author, passionate Blogger and a Software Engineer by profession. He has a very good skill over Silverlight, LightSwitch, C#, XAML & Blend. He shares his technical findings, tutorials in his technical blog. Follow his Blog and Facebook page to be updated on latest articles. - Technical Blog: https://janawat.wordpress.com - WindowsITPro Columnist(Mr.Nano): http://windowsitpro.net - The GreatFriends.Biz Community Discussion Board (nano): http://greatfriends.biz - witter: https://twitter.com/janawat - Facebook Page: https://www.facebook.com/nuchit - Instructor: http://bit.ly/GF250-01, http://bit.ly/GF150-02

เขียนใน Windows Application
One comment on “Load *.csv to DataGridView
  1. λ พูดว่า:

    แวะมาเยี่ยมครับ บทความดีและมีประโยชน์มากๆครับผม

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s

In Archive