CSV ย่อมาจาก C omma S eparated V alue
*.csv เป็นรูปแบบของ Text แบบหนึ่ง ที่มีการใช้สัญลักษณ์จุลภาค(,) มาเป็นตัวกั้นเพื่อแบ่งข้อมูลในไฟล์ออกเป็นฟิลด์ (fild) ซึ่งสามารถเปิดด้วย notepad หรือ text editor ไดๆ หรือเปิดด้วย Excel
เรามาเขียนแอพลลิเคชันเพื่อ Load ข้อมูล (*.csv) ไปแสดงบน DataGridView กันครับ:
ตัวอย่าง หน้าจอ Load ข้อมูล (*.csv) ด้วย DataGridView เป็นดังรูปที่ 1
รูปที่ 1: หน้าจอตัวอย่าง Load ข้อมูล (*.csv) ไปแสดงบน DataGridView
ตัวอย่างข้อมูล *.csv บน DataGridView ดังรูปที่ 2
รูปที่ 2: ข้อมูล *.csv บน DataGridView
เทียบเคียงข้อมูล *.csv บน DataGridView , Notepad และ Excel ดังรูปที่ 3
รูปที่ 3: เปรียบข้อมูลเมื่อเปิดด้วยโปรแกรมต่างๆ
Code:
using System.Data.OleDb;
using System.IO;
//...
//...
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