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
Visual Studio .NET'i başlatın. Dosya menüsünde, Yeni'nin üzerine gelin ve Proje'ye tıklayın.
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.
Çö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.
Görünüm menüsünde HTML Kaynağı'na tıklayarak
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>
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.
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.
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.
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>
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.
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>
Çözüm Gezgini'da Frameset.htm sağ tıklayın ve ardından Başlangıç Sayfası Olarak Ayarla'ya tıklayın.
Derleme menüsünde Çözüm Oluştur'a tıklayın.
Deneyin!
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.
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.
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.
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