Friday, May 18, 2012

Load *.csv to DataGridView

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

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

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

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

เทียบเคียงข้อมูล *.csv บน DataGridView , Notepad และ Excel ดังรูปที่ 3
4
รูปที่ 3: เปรียบข้อมูลเมื่อเปิดด้วยโปรแกรมต่างๆ

Code:
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;

            
}


        
}
//...
//...

No comments:

Post a Comment