در نمونه برنامه زیر دستوراتی برای بازکردن فایل متنی با فرمت csv ، خواندن رکوردها از فایل و نمایش آنها در یک دیتاگرید ویو نوشته شده است. روشی که در اینجا معرفی می کنیم را می تونید برای ورود داده ها از فایل CSV و اضافه کردن امکان ایمپورت داده ها به نرم افزار در سی شارپ استفاده کنید.

معرفی قالب CSV

یکی از فرمت های استاندارد و کاربردی برای نگهداری رکوردها در فایل های متنی، قالب csv است که توسط بسیاری از نرم افزارها برای صدور داده ها (export) استفاده شده و اکثر نرم افزارها قادر به خواندن فرمت csv و بازکردن رکوردهای آن هستند. پس می توان در برنامه های کاربردی برای اکسپورت(صدور) داده ها از قالب cvs استفاده کرد.

در این برنامه قصد داریم تا با دستورات زبان سی شارپ یک فایل متنی که حاوی رکوردهای اشخاص است و هر رکورد شامل فیلدهای کد، نام ، تلفن و آدرس شخص است را از فایل CSV خوانده و در یک دیتاگرید ویو نمایش دهیم.

خواندن از فایل CSV

خواندن از فایل CSV

در قالب csv ، هر رکورد در یک سطرجداگانه نوشته می شود پس بین هر دو سطر کاراکتر خط جدید (new line ) قرار داده شده است. و بین هر دو فیلد می تواند کاراکتر کاما (,) یا تب (tab ) یا سمیکالن (;) یا اسپیس قرار داد.

با توجه به قالب فایل CSV ، برای خواندن رکوردها از فایل و تشخیص و تفکیک آنها به فیلدها می توانیم کل اطلاعات فایل را یکجا خوانده در یک متغیر رشته ای قرار دهیم.

این رشته را با کمک تابع Split به چند سطر شکسته و هر سطر را در یک خانه آرایه قرار دهیم و سپس هر کدام از سطرها را بر اساس علامت بین فیلدها (مثل ویرگول) شکسته و هر فیلد را در یک خانه آرایه قرار دهیم.

برای شکستن رشته به سطرهای مختلف بر اساس کاراکتر خط جدید می نویسیم :


string[] lines=s.Split('\r');

و برای شکستن رشته مربوط به هر سطر به فیلدهای مختلف بر اساس کاراکتر ویرگول می نویسیم :

string[] fileds=line.Split('\t');

اضافه کردن رکوردها به دیتاگرید ویو

کنترل دیتاگرید ویو (datagridview) در سی شارپ برای نمایش لیست سطرهای جدول یا بعبارتی رکوردهای اطلاعاتی استفاده می شود.

برای اضافه کردن ستون های دیتاگرید ویو در سی شارپ از دستورات زیر استفاده می کنیم:

dgv.Columns.Add("code", "code");
dgv.Columns.Add("name", "name");
dgv.Columns.Add("phone", "phone");
dgv.Columns.Add("addr", "address");

برای ایجاد سطر جدید به دیتاگریدویو در سی شارپ  از دستور زیر استفاده میکنیم:

int p = dgv.Rows.Add();

برای اضافه کردن سطرهای اطلاعاتی باید  اول یک سطر اضافه کرده و سپس سلول های آن را مقدار بدهیم:

int p = dgv.Rows.Add();
dgv.Rows[p].Cells["code"].Value = words[0];
dgv.Rows[p].Cells["name"].Value = words[1];
dgv.Rows[p].Cells["phone"].Value = words[2];
dgv.Rows[p].Cells["addr"].Value = words[3];

نمونه برنامه برای خواندن محتوای فایل CSV و نمایش در دیتاگرید ویو

 

برنامه زیر نشان می دهد که چگونه با کمک یک کادر محاوره ای OPenFileDialog در سی شارپ فایل csv را انتخاب کنید، چگونه محتوای فایل متنی انتخاب شده را بخوانید و چگونه رکوردها ار تشخیص داده و در دیتا گرید ویو نمایش دهید :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
namespace p7
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnOpen_Click(object sender, EventArgs e)
{
ofd.ShowDialog();
string s = File.ReadAllText(ofd.FileName);
dgv.Columns.Add("code", "code");
dgv.Columns.Add("name", "name");
dgv.Columns.Add("phone", "phone");
dgv.Columns.Add("addr", "address");
string[] lines = s.Split('\r');
for( int i=0 ; i<lines.Length-1 ; i++)
{
//MessageBox.Show(lines[i]);
string[] words = lines[i].Split('\t');
int p = dgv.Rows.Add();
dgv.Rows[p].Cells["code"].Value = words[0];
dgv.Rows[p].Cells["name"].Value = words[1];
dgv.Rows[p].Cells["phone"].Value = words[2];
dgv.Rows[p].Cells["addr"].Value = words[3];
}
}
}
}

نمایش قابل چاپ