ASP'de DataGrid'de Verileri Dışarı Aktarma. NET WebForm'u Microsoft Excel'e

Özet

ASP.NET Bir WebForm'da DataGrid Web sunucusu denetimini doldurmak ve ardından DataGrid içeriğini Microsoft Excel'e aktarmak için bu adım adım kılavuzu kullanın.

Teknik

Bu makalede DataGrid'deki verileri dışarı aktarmaya yönelik iki teknik açıklanmaktadır:

  • Excel MIME Türünü (veya İçerik Türünü) Kullanma

    Sunucu tarafı koduyla DataGrid'i verilerinize bağlayabilir ve verilerin bir istemci bilgisayarda Excel'de açılmasını sağlayabilirsiniz. Bunu yapmak için ContentType değerini application/vnd.ms-excel olarak ayarlayın. İstemci yeni akışı aldıktan sonra, veriler Excel'de içerik Web tarayıcısında yeni bir sayfa olarak açılmış gibi görünür.

  • Excel Otomasyonu kullanma

    İstemci tarafı koduyla, DataGrid'den HTML'yi ayıklayabilir ve ardından Excel'i Otomatikleştirerek HTML'yi yeni bir çalışma kitabında görüntüleyebilirsiniz. Excel Otomasyonu ile veriler her zaman tarayıcının dışında bir Excel uygulama penceresinde görünür. Otomasyon'un bir avantajı, veriler dışarı aktarıldıktan sonra çalışma kitabını değiştirmek istiyorsanız Excel'i program aracılığıyla denetleyebilmenizdir. Ancak, Excel betik oluşturma için güvenli olarak işaretlenmediğinden, istemcilerinizin Web tarayıcısında Otomasyon'a izin veren güvenlik ayarlarını uygulaması gerekir.

Adım adım

  1. Visual Studio .NET'i başlatın. Dosya menüsünde, Yeni'nin üzerine gelin ve Proje'ye tıklayın.

  2. Proje Türleri bölmesinde Visual Basic Projeleri'ne tıklayın. Şablonlar'ın altında Web Uygulaması ASP.NET'e tıklayın. Uygulamayı ExcelExport olarak adlandırın ve Tamam'a tıklayın.

    WebForm1 sizin için Tasarım görünümünde görünür.

  3. Çözüm Gezgini'de WebForm1.aspx'e sağ tıklayın ve yeniden adlandır'a tıklayın. Dosyanın adını Bottom.aspx olarak değiştirin.

  4. Görünüm menüsünde HTML Kaynağı'na tıklayarak

    ve
    Etiketler:

    <asp:datagrid id="DataGrid1" runat="server" GridLines="Vertical" CellPadding="3" BackColor="White"
    BorderColor="#999999" BorderWidth="1px" BorderStyle="None" Width="100%" Height="100%" Font-Size="X-Small"
    Font-Names="Verdana">
    <SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#008A8C"></SelectedItemStyle>
    <AlternatingItemStyle BackColor="Gainsboro"></AlternatingItemStyle>
    <ItemStyle BorderWidth="2px" ForeColor="Black" BorderStyle="Solid" BorderColor="Black" BackColor="#EEEEEE"></ItemStyle>
    <HeaderStyle Font-Bold="True" HorizontalAlign="Center" BorderWidth="2px" ForeColor="White" BorderStyle="Solid"
    BorderColor="Black" BackColor="#000084"></HeaderStyle>
    <FooterStyle ForeColor="Black" BackColor="#CCCCCC"></FooterStyle>
    <PagerStyle HorizontalAlign="Center" ForeColor="Black" BackColor="#999999" Mode="NumericPages"></PagerStyle>
    </asp:datagrid>
    
    
  5. Görünüm menüsünde Tasarım'a tıklayarak tasarım görünümüne dönün.

    DataGrid, WebForm'da görünür.

  6. Web Formunun arkasındaki kodu görüntülemek için Görünüm menüsünde Kod'a tıklayın. Page_Load olay işleyicisine aşağıdaki kodu ekleyin:

    Not Bu kodu çalıştırmadan önce Kullanıcı Kimliği <kullanıcı adı> ve password=<strong parola> değerlerini doğru değerlerle değiştirmeniz gerekir. Kullanıcı hesabının veritabanında bu işlemi gerçekleştirmek için doğru izinlere sahip olduğundan emin olun.

    ' Create a connection and open it.
    Dim objConn As New System.Data.SqlClient.SqlConnection("User ID=<username>;Password=<strong password>;Initial Catalog=Northwind;Data Source=SQLServer;")
    objConn.Open()
    
    Dim strSQL As String
    Dim objDataset As New DataSet()
    Dim objAdapter As New System.Data.SqlClient.SqlDataAdapter()
    
    ' Get all the customers from the USA.
    strSQL = "Select * from customers where country='USA'"
    objAdapter.SelectCommand = New System.Data.SqlClient.SqlCommand(strSQL, objConn)
    ' Fill the dataset.
    objAdapter.Fill(objDataset)
    ' Create a new view.
    Dim oView As New DataView(objDataset.Tables(0))
    ' Set up the data grid and bind the data.
    DataGrid1.DataSource = oView
    DataGrid1.DataBind()
    
    ' Verify if the page is to be displayed in Excel.
    If Request.QueryString("bExcel") = "1" Then
        ' Set the content type to Excel.
        Response.ContentType = "application/vnd.ms-excel"
        ' Remove the charset from the Content-Type header.
        Response.Charset = ""
        ' Turn off the view state.
        Me.EnableViewState = False
    
    Dim tw As New System.IO.StringWriter()
        Dim hw As New System.Web.UI.HtmlTextWriter(tw)
    
    ' Get the HTML for the control.
        DataGrid1.RenderControl(hw)
        ' Write the HTML back to the browser.
        Response.Write(tw.ToString())
        ' End the response.
        Response.End()
    End If
    
    

    NOT Koddaki SQLServer değerini SQL Server adıyla değiştirin. Northwind örnek veritabanını içeren bir SQL Server erişiminiz yoksa bağlantı dizesini Microsoft Access 2002 örnek Northwind veritabanını kullanacak şekilde değiştirin:

    provider=microsoft.jet.oledb.4.0; data source=C:\Program Files\Microsoft Office\Office10\Samples\Northwind.mdb

    Bu yöntemi seçerseniz, yukarıda belirtilen kodu SqlClient ad alanı yerine OleDbClient ad alanını kullanacak şekilde değiştirin.

  7. Proje menüsünde HTML Sayfası Ekle'ye tıklayın. Sayfayı Top.htm adlandırın ve Aç'a tıklayın.

    Top.htm Tasarım görünümünde görünür.

  8. Görünüm menüsünde HTML Kaynağı'na tıklayın. HTML kaynak penceresinin içeriğini aşağıdaki kodla değiştirin:

    <html>
    <script language="vbscript">
      Sub Button1_onclick        
    
    Select Case Select1.selectedIndex
    
    Case 0' Use Automation.
          Dim sHTML
          sHTML = window.parent.frames("bottom").document.forms(0).children("DataGrid1").outerhtml
          Dim oXL, oBook
          Set oXL = CreateObject("Excel.Application")
          Set oBook = oXL.Workbooks.Add
          oBook.HTMLProject.HTMLProjectItems("Sheet1").Text = sHTML
          oBook.HTMLProject.RefreshDocument
          oXL.Visible = true
          oXL.UserControl = true
    
    Case 1' Use MIME Type (In a New Window).
          window.open("bottom.aspx?bExcel=1")
    
    Case 2' Use MIME Type (In the Frame).
          window.parent.frames("bottom").navigate "bottom.aspx?bExcel=1"
      End Select
    End Sub
    </script>
    <body>
    Export to Excel Using:
    <SELECT id="Select1" size="1" name="Select1">
    <OPTION value="0" selected>Automation</OPTION>
    <OPTION value="1">MIME Type (In a New Window)</OPTION>
    <OPTION value="2">MIME Type (In the Frame)</OPTION>
    </SELECT>
    <INPUT id="Button1" type="button" value="Go!" name="Button1">
    </body>
    </html>
    
    
  9. Proje menüsünde HTML Sayfası Ekle'ye tıklayın. Sayfayı Frameset.htm adlandırın ve Aç'a tıklayın.

    Frameset.htm Tasarım görünümünde açılır.

  10. Görünüm menüsünde HTML Kaynağı'na tıklayın. HTML kaynak penceresinin içeriğini aşağıdaki kodla değiştirin:

    <html>
    <frameset rows="10%,90%">
    <frame noresize="0" scrolling="no" name="top" src="top.htm">
    <frame noresize="0" scrolling="yes" name="bottom" src="bottom.aspx">
    </frameset>
    </html>
    
    
  11. Çözüm Gezgini'da Frameset.htm sağ tıklayın ve ardından Başlangıç Sayfası Olarak Ayarla'ya tıklayın.

  12. Derleme menüsünde Çözüm Oluştur'a tıklayın.

Deneyin!

  1. Uygulamayı çalıştırmak için Hata Ayıkla menüsünde Hata Ayıklamadan Başlat'a tıklayın.

    Çerçeve kümesi Web tarayıcısında açıldıktan sonra, alt çerçevedeki DataGrid Northwind veritabanındaki verileri görüntüler.

  2. Açılan listede Otomasyon'a ve ardından Git'e tıklayın.

    DataGrid içeriği, Microsoft Excel uygulama penceresinde tarayıcının dışında görüntülenir.

  3. Açılan listede MIME Türü 'ne (Yeni Pencerede) ve ardından Git'e tıklayın.

    DataGrid içeriği, yeni bir Web tarayıcısı penceresinde barındırılan Excel'de görüntülenir.

    NOT Excel dosyasını açmak veya kaydetmek için bir istem alırsanız Aç'a tıklayın.

  4. Açılan listede MIME Türü'ne (Çerçevede) ve ardından Git'e tıklayın.

    DataGrid içeriği, Web tarayıcısında barındırılan Excel'de çerçeve kümesinin alt çerçevesinde görüntülenir.

    NOT Excel dosyasını açmak veya kaydetmek için bir istem alırsanız Aç'a tıklayın.

Başvurular

Ek bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntüleyin:

296717 PRB: Internet Explorer Kullanıcıdan ASP'den Akışa Alınan Office Dosyasını Açmasını/Kaydetmesini İster