۱۳۸۹ يکشنبه ۱۰ مرداد Skip Navigation Links
صفحه اصلی
مقالاتExpand مقالات
تازه هاExpand تازه ها
کتاب ها
فروشگاه
اعضا
فروم (سؤال و جواب)
PD on Facebook
 
 
 
کلمه عبور خود را فراموش کرده اید؟
 
 
 خروجي دادن (Export کردن) داده ها به برنامه اکسل
.NET C# VB.NET Database
تاریخ ثبت:  ۸۶/۲/۳۱
تعداد نمایش:  ۱۰۹۰۵
  نویسنده: رحمت الله باهنر
 
   ۱۸  نفر تا این لحظه به این مقاله امتیاز داده اند.
 
   Bookmark and Share

همان گونه که مي دانيد، يکي از امکانات خوب هر برنامه اي آن است که بتواند داده ها را با فرمت هاي گوناگون خروجي دهد. همچنين احتمالا ديده ايد که توليد کنندگان يک نرم افزار، هنگام شمردنِ امکانات نرم افزار خود، اين مورد را با آب و تاب فراوان ياد مي کنند؛ که البته حق هم دارند چرا که اکسل يک استاندارد عمومي است و امکانات زيادي دارد.

در اين مقاله قصد دارم نشان دهم که چگونه مي توان داده ها را (به طور مثال داده هاي يک جدول بانک اطلاعات) را به اکسل فرستاد.

براي انجام اين پروژه نياز به Visual Studio.Net 2005 و SQL Server 2005 (نگارش Express يا کامل) خواهيد داشت.

در اين پروژه همچنين از يک بانک اطلاعات (با نام Students) استفاده شده که داراي جدول ذيل (با نام Names) است:

 

نام فيلد توضيح
StudentID(INT IDENTITY)

کد دانشجويي

FName (NVARCHAR(15)) نام
LName(NVARCHAR(20)) نام خانوادگي

 

اکنون مراحل ذيل را انجام دهيد:

۱.       در ويژوال استوديو يک پروژة جديد از نوع Widows Application ايجاد کنيد.

۲.       با استفاده از منوي Project يک ارجاع به فايل dll اکسل ايجاد کنيد: در کادر مکالمة افزودن ارجاع، از تب Browse به مسيري که Office را نصب کرده ايد، برويد؛ مانند: C:\Program Files\Microsoft Office\Ofiice12\EXCEL. (توجه کنيد که فايل dll اکسل با حروف بزرگ مشخص است).

۳.       يک DataGridView و يک Button بر روي فرم قرار دهيد.

۴.       با کليک مضاعف بر روي فرم به ويرايشگر کد منتقل شده و ابتدا فضاي نام هاي ذيل را –اگر وجود ندارد- وارد کنيد:

 

VB:

Imports System.Data

Imports System.Data.SqlClient

Imports Microsoft.Office.Interop

 

C#:

using System.Data;

using System.Data.SqlClient;

using Microsoft.Office.Interop;

using Microsoft.Office.Interop.Excel;

 

۵.       اکنون يک متغير از نوع DataSet را در داخل کلاس اعلان کنيد:

VB:

Private ds As DataSet

 

C#:

private DataSet ds;

 

۶.       در رويداد Load فرم، داده ها را در کنترل DataGridView نمايش دهيد:

VB:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles MyBase.Load

    Try

        Dim con As New SqlConnection _

          ("Data Source=.\SQLEXPRESS;Initial Catalog=Students;Integrated Security=True")

        Dim strSQL As String = "SELECT * FROM Names"

        Dim da As New SqlDataAdapter(strSQL, con)

        ds = New DataSet

        Dim tbl As DataTable = ds.Tables.Add("Students")

        da.Fill(ds, "Students")

        Me.DataGridView1.DataSource = ds.Tables(0)

    Catch ex As Exception

        MessageBox.Show(ex.Message)

    End Try

End Sub

 

C#:

private void Form1_Load(object sender, EventArgs e)

  try

   {      

        SqlConnection con = new SqlConnection

        ("Data Source=.\\SQLEXPRESS;Initial Catalog=Students;Integrated Security=True");

        string strSQL = "SELECT * FROM Names";

        SqlDataAdapter da = new SqlDataAdapter(strSQL, con);

        ds = new DataSet();

        System.Data.DataTable tbl = ds.Tables.Add("Students");

        da.Fill(ds, "Students");

        dataGridView1.DataSource = ds.Tables[0];

   }

  catch (Exception ex)

  {

        MessageBox.Show(ex.Message);

   }

}

 

مطمينا اگر شما با برنامه نويسي بانک اطلاعات آشنا باشيد اين قطعه کد کاملا براي شما آشنا است؛ پس نيازي به توضيح نيست.

 

۷.       اکنون در محيط طراحي، بر روي Button1 کليک مضاعف کرده و کدِ آن را اين گونه بنويسيد:

VB:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles Button1.Click

    Try

       Dim excelApp As New Excel.Application()

       Dim excelBook As Excel.Workbook = excelApp.Workbooks.Add

       Dim excelWorksheet As Excel.Worksheet = _

                CType(excelBook.Worksheets(1), Excel.Worksheet)

       excelApp.Visible = True

       Dim i As Integer = 2

       Dim j As Integer

       With excelWorksheet

          .DisplayRightToLeft = True

          .Range("A1").Value = "کد"

          .Range("A1").Font.Bold = True

          .Range("B1").Value = "نام"

          .Range("B1").Font.Bold = True

          .Range("C1").Value = "نام خانوادگي"

          .Range("C1").Font.Bold = True

         For j = 0 To ds.Tables(0).Rows.Count - 1

             .Range("A" & i.ToString).Value = ds.Tables(0).Rows(j).Item(0)

             .Range("B" & i.ToString).Value = ds.Tables(0).Rows(j).Item(1)

             .Range("C" & i.ToString).Value = ds.Tables(0).Rows(j).Item(2)

             i += 1

         Next

       End With

    Catch ex As Exception

         MessageBox.Show(ex.Message)

    End Try

End Sub

 

C#:

private void button1_Click(object sender, EventArgs e)

{

   try

   {

      Microsoft.Office.Interop.Excel.Application excelApp = new

          Microsoft.Office.Interop.Excel.Application();

      Microsoft.Office.Interop.Excel.Workbook excelBook =

          excelApp.Workbooks.Add(XlSheetType.xlWorksheet);

      Microsoft.Office.Interop.Excel.Worksheet excelWorksheet =

          (Worksheet)(excelBook.Worksheets[1]);

       excelApp.Visible = true;

      excelWorksheet.DisplayRightToLeft = true;

       Range rng1 = excelWorksheet.get_Range("A1", "A1");

      rng1.Value2 = "کد";

      rng1.Font.Bold = true;

      Range rng2 = excelWorksheet.get_Range("B1", "B1");

      rng2.Value2 = "نام";

      rng2.Font.Bold = true;

      Range rng3 = excelWorksheet.get_Range("C1", "C1");

      rng3.Value2 = "نام خانوادگي";

      rng3.Font.Bold = true;

      int i = 1;

      foreach (DataRow r in ds.Tables[0].Rows)

      {

           i++;

           string s = i.ToString();

           Range r1 = excelWorksheet.get_Range("A" + s, "A" + s);

           r1.Value2 = r[0].ToString();

           Range r2 = excelWorksheet.get_Range("B" + s, "B" + s);

           r2.Value2 = r[1].ToString();

           Range r3 = excelWorksheet.get_Range("C" + s, "C" + s);

           r3.Value2 = r[2].ToString();                  

       }

    }

    catch (Exception ex)

    {

        MessageBox.Show(ex.Message);

    }

}

 

فکر مي کنم منطق اين قطعه کد کاملاً ساده است: ابتدا بايد يک نمونه از Excel Application ايجاد شود؛ سپس يک WorkBook و يک WorkSheet. همان گونه که مي دانيد، هر سند اکسل از يک WorkBook تشکيل مي شود که حاوي يک يا چند WorkSheet است.

تنها واژه اي که نياز به توضيح دارد Range است: Range محدوده اي از خانه هاي يک WorkSheet است که مي تواند شامل يک يا چند خانه باشد؛ دو آرگومان آن خانه های ابتدا و انتها را مشخص می کند. در قطعه کد بالا ابتدا چند Range ايجاد کرده ايم که به عنوان Header (سرستون) نمايش داده مي شود؛ سپس در داخل يک حلقه، به از اي هر سطر و فيلد از جدول Students يک Range ايجاد مي کنيم و آن را مقداردهي مي کنيم. اگر کمي دقت کنيد مي بينيد که کاملا ساده است.

نتيجة کار مانند ذيل است:

 

نکتة آخر اين که شما از داخل کد خود کارهاي زيادي با اکسل مي توانيد انجام دهيد مانند محاسبات گوناگون، استفاده از چارت هاي اکسل و ...

 

  کیفیت مقاله ارائه شده از نظر شما   
برای دادن رتبه به این مقاله می بایست Login کرده باشید.
  درباره نویسنده
رحمت الله باهنر
سایت شخصی: afg-home.com
همه مقاله های نوشته شده توسط این کاربر (۲)
 
  پیام جدید
صفحه ۱ - پیامهای اصلی ۱ تا ۸ از مجموع ۸ پیام اصلی
اولین قبلی بعدی

 عنوان فرستنده تاریخ
 
old Format Error in C مهدی خالقیان ۸۷/۹/۲۴
 
error olde format افشين اكبر ۸۷/۷/۲۹
پاسخ به: error olde format نادر رفیعی ۸۷/۸/۲
 
برعكسش چطوري ميشه ؟؟؟؟؟؟؟؟ سجاد ميرحسيني ۸۶/۷/۲۳
 
گزارش گیری امید فرهادی ۸۶/۵/۸
 
ايجاد error مبني بر قديمي بودن در هنگام استفاده از كد نوشته شده در vb.net2005 علي ميراوليايي ۸۶/۴/۱۱
 
نمونه بر نا مه امید فرهادی ۸۶/۳/۱۹
پاسخ به: نمونه بر نا مه رحمت الله باهنر ۸۶/۳/۲۱
 
راهنمایی دره آبی ۸۶/۳/۱۷
پاسخ به: راهنمایی رحمت الله باهنر ۸۶/۳/۲۱
 
در خواست آموزش امید فرهادی ۸۶/۳/۲
پاسخ به: در خواست آموزش رحمت الله باهنر ۸۶/۳/۱۰
اولین قبلی بعدی

Copyright © 2006 - 2010 All Rights Reserved.
Please direct your questions or comments to