حسین احمدی
بنیانگذار توسینسو و برنامه نویس و توسعه دهنده ارشد وب

آموزش خواندن و کار با فایل های CSV در سی شارپ (C#)

راه های زیادی برای پردازش و خواندن فایل های CSV در سی شارپ وجود داره، مثل اینکه خط به خط فایل متنی خونده بشه و مقادیر استخراج بشن. اما یکی از راهکارهای ساده استفاده از پکیج LumenWorksCsvReader هست. بوسیله این پکیج شما به راحتی می تونید اطلاعات رو از یک فایل CSV بخونید و بوسیله یک DataTable به اطلاعات دسترسی داشته باشید.برای فایل CSV نمونه می تونید از فایلی که به این مطلب ضمیمه شده استفاده کنید. در ابتدا بوسیله دستور زیر پکیج LumenWorksCsvReader رو به پروژه اضافه کنید:

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
Install-Package LumenWorksCsvReader

بعد از اضافه کردن پکیج، باید یک DataTable برای نگهداری مقادیر بارگذاری شده تعریف کنیم:

var csvTable = new DataTable();

برای خوندن فایل csv و بارگذاری اطلاعات داخل DataTable از کلاس CsvReader به صورت زیر استفاده می کنیم:

using (var csvReader = new CsvReader(new FileStream("e:\\data.csv", FileMode.Open), true, Encoding.UTF8))
{
    csvTable.Load(csvReader);    
}

برای یادگیری و آموزش سی شارپ ( آموزش زبان برنامه نویسی سی شارپ ) رایگان به این لینک بروید

پارامترهایی که در کد بالا به کلاس CsvReader ارسال کردیم به ترتیب:

  1. یک شئ از نوع Stream که شامل فایل بارگذاری شده هست و ما اینجا از کلاس FileStream استفاده کردیم.
  2. پارامتر دوم مشخص می کنه که فایل ما شامل Header هست یا نه. منظور خط اول فایل هست که معمولاً نام هر ستون مشخص میشه
  3. Encoding مورد استفاده بری خواندن مقادیر فایل

نکته ای که باید بهش توجه کنید این هست که معمولاً فایل های csv یک مفهومی دارن به نام Delimiter که کاراکتر جداکننده هر ستون رو مشخص می کنه. به صورت پیش فرض کاراکتر , برای delimiter استفاده میشه، اما می تونید بوسیله پارامتر delimiter کاراکتر جداکننده رو مشخص کنید:

using (var csvReader = new CsvReader(new FileStream("e:\\data.csv", FileMode.Open), true, Encoding.UTF8, delimiter: ';'))

دستور زیر اطلاعات بارگذاری شده داخل DataTable رو داخل خروجی نمایش میده:

foreach (DataRow row in csvTable.Rows)
{
    Console.WriteLine($"policyID: {row[0]}, statecode: {row["statecode"]}, country: {row["county"]}");
}

بخشی از خروجی کد بالا به صورت زیر هست:

policyID: 279152, statecode: FL, country: HILLSBOROUGH COUNTY
policyID: 794433, statecode: FL, country: HILLSBOROUGH COUNTY
policyID: 724093, statecode: FL, country: HILLSBOROUGH COUNTY
policyID: 284559, statecode: FL, country: PINELLAS COUNTY
policyID: 260623, statecode: FL, country: PINELLAS COUNTY
policyID: 277148, statecode: FL, country: PINELLAS COUNTY

در مطلب در مورد نحوه ایجاد یک کلاس به عنوان Model و ایجاد مدل از روی فایل CSV توضیح می دیم.


حسین احمدی
حسین احمدی

بنیانگذار توسینسو و برنامه نویس و توسعه دهنده ارشد وب

حسین احمدی ، بنیانگذار TOSINSO ، توسعه دهنده وب و برنامه نویس ، بیش از 12 سال سابقه فعالیت حرفه ای در سطح کلان ، مشاور ، مدیر پروژه و مدرس نهادهای مالی و اعتباری ، تخصص در پلتفرم دات نت و زبان سی شارپ ، طراحی و توسعه وب ، امنیت نرم افزار ، تحلیل سیستم های اطلاعاتی و داده کاوی ...

نظرات