ارسال Datatable به CSV با استفاده از متد Extension
شنبه 28 تیر 1393ارسال Datatable به CSV با استفاده از متد Extension
سلام
من می خواهم امروز چگونگی ارسال یک datatable به comma seprated file با استفاده از متد Extension را برای شما توضیح دهم.
در این مقاله همچنین یاد خواهید گرفت که چگونه از متدهای Extension برای ساخت کدهایی با کنترل بهتر،استفاده کنید.
درباره CSV File
فایلی است که همه ی مقادیر آن با کاما از هم جدا شده اند.که این فایل شامل داده هایی با همه ی ستون ها خواهد شد.
استفاده دیگر از فایل CSV ،این است که مستقیما فایل را در اکسل باز می کند و سپس داده ها به صورت اتوماتیک در خانه های اکسل پر خواهند شد.
1-ساخت یک DataTable
ما یک کلاس را که شامل یک متدی است که یک دیتا تیبل را بر می کرداند ،اضافه می کنیم.
public static class OperationsUtlity { public static DataTable createDataTable() { DataTable table = new DataTable(); //columns table.Columns.Add("ID", typeof(int)); table.Columns.Add("NAME", typeof(string)); table.Columns.Add("CITY", typeof(string)); //data table.Rows.Add(111, "Devesh", "Ghaziabad"); table.Rows.Add(222, "ROLI", "KANPUR"); table.Rows.Add(102, "ROLI", "MAINPURI"); table.Rows.Add(212, "DEVESH", "KANPUR"); table.Rows.Add(102, "NIKHIL", "GZB"); table.Rows.Add(212, "HIMANSHU", "NOIDa"); table.Rows.Add(102, "AVINASH", "NOIDa"); table.Rows.Add(212, "BHUPPI", "GZB"); return table; } }
2-ساخت UI برای نمایش DataTable
در اینجا یک گرید ویو ساده را برای اتصال به دیتاتیبل اضافه می کنیم.
کد
3-ساخت یک متد Extension برای تبدیل یک دیتاتیبل به CSV
ساخت یک کلاس
public static class CSVUtlity { }
اضافه کردن یک متد Extension
public static void ToCSV(this DataTable dtDataTable, string strFilePath) { }
این متد دیتا تیبل را به عنوان یک پارامتر می گیرد
بعد از اضافه کردن متد Extension با نام ToCSV ، لیست زیر را در آن قرار می دهیم.
کد زیر دیتاتیبل را به CSV تبدیل می کند
public static void ToCSV(this DataTable dtDataTable, string strFilePath) { StreamWriter sw = new StreamWriter(strFilePath, false); //headers for (int i = 0; i < dtDataTable.Columns.Count; i++) { sw.Write(dtDataTable.Columns[i]); if (i < dtDataTable.Columns.Count - 1) { sw.Write(","); } } sw.Write(sw.NewLine); foreach (DataRow dr in dtDataTable.Rows) { for (int i = 0; i < dtDataTable.Columns.Count; i++) { if (!Convert.IsDBNull(dr[i])) { string value = dr[i].ToString(); if (value.Contains(',')) { value = String.Format("\"{0}\"", value); sw.Write(value); } else { sw.Write(dr[i].ToString()); } } if (i < dtDataTable.Columns.Count - 1) { sw.Write(","); } } sw.Write(sw.NewLine); } sw.Close(); }
4-ارسال به CSV روی کلیک دکمه
private void btnCSV_Click(object sender, EventArgs e) { DataTable dt = OperationsUtlity.createDataTable(); string filename = OpenSavefileDialog(); dt.ToCSV(filename); }
dt.TOCSV متد TOCSV را که در کلاس CSVutlity قرار دارد را صدا می کند
5- خروجی کد
خروجی کد یک فایل اکسل است
باز کردن فایل در NotePad
به صورت پیش فرض در اکسل باز می شود
امیدوارم این مقاله برای شما مفید بوده باشد.
- C#.net
- 3k بازدید
- 4 تشکر