فناوری اطلاعات

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

فناوری اطلاعات

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

آخرین نظرات
  • ۲۶ تیر ۰۰، ۱۶:۰۱ - آلپ صنعت
    عالیه

Export کردن Datatable به CSV با متد Extension

سید محسن علوی | جمعه, ۱۰ مرداد ۱۳۹۳، ۰۶:۲۵ ب.ظ

چگونگی ارسال یک Datatable به CSV (Comma Separated File) با استفاده از متد Extension  را برای شما توضیح دهم.

فایل های CSV چه فایل هایی می باشند؟

فایلی است که همه ی مقادیر آن با کاما (,) از هم جدا شده اند.که این فایل شامل داده هایی با همه ی ستون ها خواهد شد.

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

 

1- ابتدا یک Datatble در برنامه ایجاد کرده ایم :

            DataTable Dt = new DataTable();

            //Columns
            Dt.Columns.Add("ID", typeof(int));
            Dt.Columns.Add("First Name", typeof(string));
            Dt.Columns.Add("City", typeof(string));

           //Data

            Dt.Rows.Add(1, "Mohsen", "Bojnourd");
            Dt.Rows.Add(2, "Mostafa", "Tehran");
            Dt.Rows.Add(3, "Fahime", "Bojnourd");
            Dt.Rows.Add(4, "Narges", "Kerman");
            Dt.Rows.Add(5, "Maryam", "Shiraz");
            Dt.Rows.Add(6, "Farzad", "Mashhad");

 2- برای نمایش به کاربر از یک DataGrid در حالت نمایش فرم استفاده کرده ایم.

 3- ساخت  متد Extension برای تبدیل Datatable به CSV

         3-1 ابتدا یک کلاس ایجاد میکنیم 

    public static class  CSVUtlity

    {
    }

      3-2 اضافه کردن متد Extension

        public static void ToCSV(this DataTable dtDataTable, string strFilePath)

        {
 
        }

      3-3 حال میریم به سراغ کدهای مربوط به Extension که ساختیم با نام ToCSV 

 

        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- حال در برنامه یک Button قرار میدهیم که با Click بر آن عمل تبدیل را انجام بدهد
private void BtnExportCSV_Click(object sender, EventArgs e)
        {
            string filename = SavefileDialog();
            Dt.ToCSV(filename);
         }
         4-1 Dt.ToCSVمتد ToCSV را که در کلاس CSVutlity قرار دارد را صدا می زند.
         4-2 SavefileDialog نام کلاسی می باشد که برای باز کردن پنجره SaveFileDialog از آن استفاده کرده ایم کدهای آن 
 
        private string SavefileDialog()
        {
            string Filename = null;
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            //saveFileDialog.Filter = "Excel|*.xls";
            saveFileDialog.Filter = "csv File|*.csv";
            saveFileDialog.Title = "Save Report";
            DialogResult dialogResult = saveFileDialog.ShowDialog();
            if (dialogResult == DialogResult.OK)
                Filename = saveFileDialog.FileName;
            return Filename;
        }​
 
 
 
 

 

  • سید محسن علوی

آموزش C#

C#

نظرات  (۱)

سلام
اگر اگر اطلاعات DataTable فارسی باشند موقع تبدیل به CSV بصورت فارسی نمایش داده نمیشوند
اگر راهنمایی کنید ممنون میشم
پاسخ:
سلام
دوست عزیز اطلاعات فارسی هم باشد مشکلی ندارد.
برای تبدیل به این فایل csv اطلاعات چه فارسی باشد چه انگلیسی مشکلی وجود ندارد.
شاید شما در باز کردن فایل در برنامه اکسل مشکل دارید که اونم مراحل خاص خودش رو داره و تنظیمات خودش رو موقع باز کردن.ولی اگر با برنامه Notepad باز کنید میبینی که همه جورده مرتب و درست می باشد.
اگر هم هدف شماگرفتن خروجی اکسل می باشد از مطلب "تابعی برای گرفتن خروجی Excel از برنامه" استفاده کنید.

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی