درخواست

سلام دوستان

مثل همیشه درگیری های نقل مطالب از سایتی به سایت دیگر آنهم بصورت کپی برداری محض!

من اشکالی در این کار نمیبینم هر چند که خودم این کار رو نمیکنم.

ولی خواهش دارم اگر کسی مطلبی از سایت من نقل کرد منبع رو ذکر کنه نه بخاطر معروف شدن بلکه بخاطر ثبت شدن در موتورهای جستجو.

 

متشکرم

در باب اتصال به اکسل

ایجاد گزارشات از فایلهای اکسل در NET2

مقدمه

اکسل یکی از قوی ترین برنامه ها در ایجاد گزارشات و ارائه آمار های گرافیکی میباشد که سالهاست طرفداران خاص خود را راضی نگه داشته است.

با توجه به استفاده عموم از این برنامه ارائه گزارشات آن تحت وب مورد توجه قرار میگیرد. در این مقاله بصورت خلاصه وار به مراحل تولید گزارش از فایلهای اکسل در دات نت 2 میپردازیم. لینک اصلی مقاله به زبان انگلیسی در انتهای مطلب ذکر شده است.

آبرقراری ارتباط با اکسل

در واقع آبجکتهای COM زیادی برای برقراری ارتباط با اکسل وجود دارد. ولی در این مقاله ما میخواهیم از OleDB برای این منظور استفاده کنیم تا به اکسل بعنوان یک جدول ساده ارتباط برقرار کنیم. همچنین میتوانیم با استفاده از SQL queries اطلاعات مورد نیازمان را از فایل اکسل استخراج نمائیم.

حال باید Microsoft Excel 11.0 Object Library  را به Reference پروژه تان  اضافه نمائید:

نحوه افزودن Microsoft Excel 11.0 Object Library به Reference

نحوه افزودن Microsoft Excel 11.0 Object Library به Reference

فایل اکسل را در شاخه DataSource در ASAP.NET  اضافه  کنید.حال در فایل web.config خط زیر را وارد نمائید:

<add name="ExcelConnection" connectionString="Provider=Microsoft.Jet.Oledb.4.0;Data Source=|DataDirectory|\SchoolMgt.xls;Extended Properties=Excel 8.0"/>

خواندن اطلاعات از شیت اکسل

برای این کار کافیست فرامین زیر را بنویسیم

Imports System.Data.OleDb
Imports System.Data

Protected Sub btnSearch_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSearch.Click
Try
            Dim strExcelConn As String = System.Configuration.ConfigurationManager.ConnectionStrings.Item("ExcelConnection").ToString()
            Dim dbConn As New OleDbConnection(strExcelConn)
            Dim strSQL As String
 
            strSQL = "SELECT * FROM [" & cmbSheets.SelectedItem.ToString() & "$]"
 
            dbConn.Open()
 
            Dim cmd As New OleDbCommand(strSQL, dbConn)
            Dim dsExcel As New DataSet
            Dim daExcel As New OleDbDataAdapter(cmd)
 
            daExcel.Fill(dsExcel)
 
            dgResults.DataSource = dsExcel
            dgResults.DataBind()
        Catch ex As Exception
            Throw ex
        End Try
End Sub

 

 

بازی با دستوات SQL

حال برای اینکه گزارشاتی شبیه به خود اکسل تولید نمائیم و شاید فرمولی را پیاده سازی نمائیم میتوانیم از فرامین زیر استفاده کنیم:

Protected Sub btnGenerateReport_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnGenerateReport.Click
Try
 
Dim strExcelConn As String = System.Configuration.ConfigurationManager.ConnectionStrings.Item("ExcelConnection").ToString()
Dim dbConn As New OleDbConnection(strExcelConn)
Dim strSQL As String
 
strSQL = "SELECT S.StudentId, S.StudentName, M.Marks, G.Marks, (M.Marks+G.Marks) AS Total "& _
                     "FROM [Students$] S, [Mathematics$] M, [Geography$] G "& _
                     "WHERE(S.StudentId = M.StudentId And S.StudentId = G.StudentId) " & _
                     "ORDER BY (M.Marks+G.Marks) DESC"
dbConn.Open()
 
Dim cmd As New OleDbCommand(strSQL, dbConn)
Dim dsExcel As New DataSet
Dim daExcel As New OleDbDataAdapter(cmd)
 
daExcel.Fill(dsExcel)
 
dgReports.DataSource = dsExcel
dgReports.DataBind()
 
Catch ex As Exception
Throw ex
End Try
End Sub

 

ایجاد فایل اکسل از گزارشات:

روش اول استفاده از کلاس Response:

Protected Sub btnToExcelByResponse_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnToExcelByResponse.Click
        '   Variables declaration
        Dim dsExport As New DataSet()
        Dim tw As New System.IO.StringWriter()
        Dim hw As New System.Web.UI.HtmlTextWriter(tw)
        Dim dgGrid As New DataGrid()
 
        dgGrid.DataSource = getData()
 
        '   Report Header
        hw.WriteLine("<b><u><font size='5'> DotNetClub Report </font></u></b>"
)
 
        '   Get the HTML for the control.
        dgGrid.HeaderStyle.Font.Bold = True
        dgGrid.DataBind()
        dgGrid.RenderControl(hw)
 
        '   Write the HTML back to the browser.
        Response.ContentType = "application/vnd.ms-excel"
        Me.EnableViewState = False
        Response.Write(tw.ToString())
        Response.End()
    End Sub

 

 استفاده از Microsoft Excel 11.0  Objects provide  برای اتصال مستقیم به اکسل

Imports System.Reflection
Imports Excel = Microsoft.Office.Interop.Excel
 
    Protected Sub btnToExcelByObjects_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnToExcelByObjects.Click
        Try
            Dim xlWorkBook As Excel.Workbook
            Dim xlWorkSheet As Excel.Worksheet
 
            xlWorkBook = New Excel.Application().Workbooks.Add(Missing.Value)
            xlWorkBook.Application.Visible = True
            xlWorkSheet = xlWorkBook.ActiveSheet
 
            '   Gets the dataset containing the data
            Dim dsData As DataSet = getData()
            Dim i As Integer = 2
 
            '   Outputting the fieldnames in pink bold color
            xlWorkSheet.Cells(1, 1) = "Student ID"
            xlWorkSheet.Cells(1, 2) = "Student Name"
            xlWorkSheet.Cells(1, 3) = "Mathematics"
            xlWorkSheet.Cells(1, 4) = "Geography"
            xlWorkSheet.Cells(1, 5) = "Total"
 
            xlWorkSheet.Range("$A1:$E1").Font.ColorIndex = Excel.Constants.xlColor1
            xlWorkSheet.Range("$A1:$E1").Font.Bold = True
 
            '   Outputting the data
            For Each dr As DataRow In dsData.Tables(0).Rows
                xlWorkSheet.Cells(i, 1) = dr(0)
                xlWorkSheet.Cells(i, 2) = dr(1)
                xlWorkSheet.Cells(i, 3) = dr(2)
                xlWorkSheet.Cells(i, 4) = dr(3)
 
                '   Building the formula for calculating the sum
                xlWorkSheet.Cells(i, 5).Formula = "=SUM($C{0}:$D{0})".Replace("{0}", i.ToString())
 
                '   Going to the next row
                i = i + 1
            Next
 
            '   Auto fit the columns
            xlWorkSheet.Columns.AutoFit()
 
            '   Generating the graph
            Dim chart As Excel.Chart
            chart = xlWorkBook.Charts.Add()
 
            With chart
                .ChartType = Excel.XlChartType.xlColumnClustered
                .SetSourceData(xlWorkSheet.Range("A1:E11"), 2)
 
                .HasTitle = True
                .ChartTitle.Characters.Text = "Students' marks"
 
                .Axes(1, Excel.XlAxisGroup.xlPrimary).HasTitle = True
                .Axes(1, Excel.XlAxisGroup.xlPrimary).AxisTitle.Characters.Text = "Students"
                .Axes(2, Excel.XlAxisGroup.xlPrimary).HasTitle = True
                .Axes(2, Excel.XlAxisGroup.xlPrimary).AxisTitle.Characters.Text = "Marks"
            End With
        Catch ex As Exception
            Throw ex
        End Try
    End Sub

 

خلاصه:

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

دو روش برای ایجاد فایل اکسل از گزارشات در ASP.NET2

منبع :http://www.beansoftware.com/ASP.NET-Tutorials/Generating-Excel-Reports.aspx

دانلود کد:Excel Reports Example ASP.NET Project

 

در باب Masterpages

نحوه دسترسی به مقادیر کنترلهای کاربر (ارتباطات پایه) نحوه ارتباط صفحه با کنترل کاربر

   1:  'VB.NET - هدر کنترل کاربر
   2:  Public Class ResultHeader
   3:  Inherits System.Web.UI.UserControl
   4:   Private Const headerTemplate As String = "Page {1} of {2}"
   5:   Protected header As Literal
   6:   Private currentPage As Integer
   7:   Private recordsPerPage As Integer
   8:
   9:   Public Property CurrentPage() As Integer
  10:     Get
  11:       Return currentPage
  12:     End Get
  13:     Set
  14:       currentPage = value
  15:     End Set
  16:   End Property
  17:
  18:   Public Property RecordsPerPage() As Integer
  19:     Get
  20:       Return recordsPerPage
  21:     End Get
  22:     Set
  23:       recordsPerPage = value
  24:     End Set
  25:   End Property
  26:
  27:   Private Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
  28:     header.Text = headerTemplate
  29:     header.Text = header.Text.Replace("{1}", currentPage.ToString())
  30:     header.Text = header.Text.Replace("{2}", recordsPerPage.ToString())
  31:   End Sub
  32:  End Class

از صفحه به کنترل کاربر

    

کد وی بی

   1:  'VB.NET
   2:  dim c as Control = Page.LoadControl("Results.ascx")
   3:  c.Info = SomeBusinessLayer.GetAllResults()
       'not valid, Info isn't a member of Control
   4:
   5:  dim r as Results = ctype(Page.LoadControl("Results.ascx"), Results)
   6:  r.Info = SomeBusinessLayer.GetAllResults() 

از کنترل کاربر به صفحه

   1:  'VB.NET
   2:  Dim pageTitle As String = Nothing
   3:  If TypeOf (Page) Is SamplePage Then
   4:     pageTitle = CType(Page, SamplePage).Title
   5:  Else
   6:     pageTitle = "unknown"
   7:  End If

از کنترل کاربر به کنتر کاربر

کد صفحه:

 

   1:  Public Class SamplePage
   2:   Inherits System.Web.UI.Page
   3:   Private rr As Results
   4:   Private rh As ResultHeader
   5:   Private _title As String
   6:   Public ReadOnly Property Title() As String
   7:    Get
   8:     Return _title
   9:    End Get
  10:   End Property
  11:   Public ReadOnly Property Results() As Results
  12:    Get
  13:     Return rr
  14:    End Get
  15:   End Property
  16:   Public ReadOnly Property Header() As ResultHeader
  17:    Get
  18:     Return rh
  19:    End Get
  20:   End Property
  21:  ...
  22:  End Class

   کد سمت کنترل کاربری

   1:  'VB.NET
   2:  Private Sub Page_Load(ByVal sender As System.Object, _
               ByVal e As System.EventArgs) Handles MyBase.Load
   3:   Dim info As DataTable
   4:   If TypeOf (Page) Is SamplePage Then
   5:    info = CType(Page, SamplePage).Results.Info
   6:   End If
   7:  End Sub

 

و اولین پست!

سلام به دوستان

این اولین پست من در این وبلاگه!

منتظر پست های بعدی باشید.