خروجي دادن (Export کردن) داده ها به برنامه اکسل

اکنون مراحل ذيل را انجام دهيد:
1. در ويژوال استوديو يک پروژة جديد از نوع Widows Application ايجاد کنيد.
2. با استفاده از منوي Project يک ارجاع به فايل dll اکسل ايجاد کنيد: در کادر مکالمة افزودن ارجاع، از تب Browse به مسيري که Office را نصب کرده ايد، برويد؛ مانند: C:\Program Files\Microsoft Office\Ofiice12\EXCEL. (توجه کنيد که فايل dll اکسل با حروف بزرگ مشخص است).
3. يک DataGridView و يک Button بر روي فرم قرار دهيد.
4. با کليک مضاعف بر روي فرم به ويرايشگر کد منتقل شده و ابتدا فضاي نام هاي ذيل را -اگر وجود ندارد- وارد کنيد:
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;
5. اکنون يک متغير از نوع DataSet را در داخل کلاس اعلان کنيد:
VB:
Private ds As DataSet
 C#:
private DataSet ds;
6. در رويداد 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);
   }
}

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








7. اکنون در محيط طراحي، بر روي 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()
celWorksheet As Excel.Worksheet = _ CType(excelBook.W
Dim excelBook As Excel.Workbook = excelApp.Workbooks.Add Dim e
xorksheets(1), Excel.Worksheet) excelApp.Visible = True Dim i As Integer = 2 Dim j As Integer With excelWorksheet
.Range("B1").Font.Bold = T
.DisplayRightToLeft = True .Range("A1").Value = "کد" .Range("A1").Font.Bold = True .Range("B1").Value = "نام" rue
"A" & i.ToString).Value = ds.Tables(0).Ro
.Range("C1").Value = "نام خانوادگي" .Range("C1").Font.Bold = True For j = 0 To ds.Tables(0).Rows.Count - 1 .Range
(ws(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 {
Office.Interop.Excel.Application excelApp = new Microso
Microsoft
.ft.Office.Interop.Excel.Application();
ook excelBook = excelApp.Workbooks.Add(XlSheetTyp
Microsoft.Office.Interop.Excel.Work
be.xlWorksheet); Microsoft.Office.Interop.Excel.Worksheet excelWorksheet =
elWorksheet.DisplayRightToLeft = true;
(Worksheet)(excelBook.Worksheets[1]); excelApp.Visible = true; ex
cRange rng1 = excelWorksheet.get_Range("A1", "A1"); rng1.Value2 = "کد"; rng1.Font.Bold = true;
ue; Range rng3 = excelWorksheet.get_Range("C1", "C
Range rng2 = excelWorksheet.get_Range("B1", "B1"); rng2.Value2 = "نام"; rng2.Font.Bold = t
r1"); rng3.Value2 = "نام خانوادگي"; rng3.Font.Bold = true; int i = 1; foreach (DataRow r in ds.Tables[0].Rows) { i++;
= excelWorksheet.get_Range("B"
string s = i.ToString(); Range r1 = excelWorksheet.get_Range("A" + s, "A" + s); r1.Value2 = r[0].ToString(); Range r
2 + 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 ايجاد مي کنيم و آن را مقداردهي مي کنيم. اگر کمي دقت کنيد مي بينيد که کاملا ساده است.


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