Adatok exportálása DataGridben ASP-n. NET WebForm – Microsoft Excel

Összefoglalás

Ezzel a lépésenkénti útmutatóval feltöltheti a DataGrid webkiszolgáló-vezérlőt egy ASP.NET WebFormon, majd exportálhatja a DataGrid tartalmát a Microsoft Excelbe.

Technikák

Ez a cikk két módszert ismertet az adatok DataGridben való exportálására:

  • Az Excel MIME típusának (vagy tartalomtípusának) használata

    A kiszolgálóoldali kóddal az adatokhoz kötheti a DataGridet, és megnyithatja az adatokat az Excelben egy ügyfélszámítógépen. Ehhez állítsa a ContentType értékét application/vnd.ms-excel értékre. Miután az ügyfél megkapta az új streamet, az adatok úgy jelennek meg az Excelben, mintha a tartalmat új lapként nyitották volna meg a webböngészőben.

  • Az Excel Automation használata

    Az ügyféloldali kóddal kinyerheti a HTML-t a DataGridből, majd automatizálhatja az Excelt a HTML új munkafüzetben való megjelenítéséhez. Az Excel Automationben az adatok mindig a böngészőn kívül jelennek meg egy Excel-alkalmazásablakban. Az Automation egyik előnye, hogy programozott módon vezérelheti az Excelt, ha módosítani szeretné a munkafüzetet az adatok exportálása után. Mivel azonban az Excel nincs biztonságosként megjelölve a parancsfájlok futtatásához, az ügyfeleknek olyan biztonsági beállításokat kell alkalmazniuk a webböngészőben, amelyek engedélyezik az Automationt.

Lépésről

  1. Indítsa el a Visual Studio .NET-et. A Fájl menüben mutasson az Új pontra, majd kattintson a Project parancsra.

  2. A Projekttípusok panelen kattintson a Visual Basic Projects elemre. A Sablonok területen kattintson ASP.NET webalkalmazásra. Adja az excelexport nevet az alkalmazásnak, majd kattintson az OK gombra.

    A WebForm1 megjelenik Tervező nézetben.

  3. A Megoldáskezelő kattintson a jobb gombbal a WebForm1.aspx fájlra, majd kattintson az Átnevezés parancsra. Módosítsa a fájl nevét Bottom.aspx névre.

  4. A Nézet menüben kattintson a HTML-forrás elemre a következő DataGrid hozzáadásához a

    és
    Címkék:

    <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. A Nézet menüBen kattintson a Tervezés gombra a tervező nézethez való visszatéréshez.

    A DataGrid megjelenik a WebFormon.

  6. A Nézet menüBen kattintson a Kód elemre a webes űrlap mögötti kód megjelenítéséhez. Adja hozzá a következő kódot a Page_Load eseménykezelőhöz:

    Megjegyzés A kód futtatása előtt módosítania kell a felhasználói azonosító <felhasználónevét> és a password=<strong jelszót> a megfelelő értékekre. Győződjön meg arról, hogy a felhasználói fiók rendelkezik a megfelelő engedélyekkel a művelet végrehajtásához az adatbázisban.

    ' 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
    
    

    MEGJEGYZÉS Cserélje le az SQLServert a kódban a SQL Server nevére. Ha nem rendelkezik hozzáféréssel a Northwind mintaadatbázist tartalmazó SQL Server, módosítsa a kapcsolati sztring a Microsoft Access 2002 Northwind mintaadatbázis használatára:

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

    Ha ezt a módszert választja, módosítsa a fent említett kódot úgy, hogy az OleDbClient névteret használja az SqlClient névtér helyett.

  7. A Projekt menüben kattintson a HTML-oldal hozzáadása elemre. Nevezze el a lapot Top.htm, majd kattintson a Megnyitás gombra.

    Top.htm megjelenik Tervező nézetben.

  8. A Nézet menüben kattintson a HTML-forrás elemre. Cserélje le a HTML-forrásablak tartalmát a következő kódra:

    <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. A Projekt menüben kattintson a HTML-oldal hozzáadása elemre. Nevezze el a lapot Frameset.htm, majd kattintson a Megnyitás gombra.

    Frameset.htm Tervező nézetben nyílik meg.

  10. A Nézet menüben kattintson a HTML-forrás elemre. Cserélje le a HTML-forrásablak tartalmát a következő kódra:

    <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. A Megoldáskezelő kattintson a jobb gombbal Frameset.htm, majd kattintson a Beállítás kezdőlapként parancsra.

  12. A Build menüben kattintson a Megoldás létrehozása elemre.

Próbálja ki!

  1. A Hibakeresés menüben kattintson a Start Hibakeresés nélkül elemre az alkalmazás futtatásához.

    Miután a keretkészlet megnyílik a webböngészőben, az alsó keretben lévő DataGrid megjeleníti a Northwind-adatbázis adatait.

  2. A legördülő listában kattintson az Automation, majd az Ugrás gombra.

    A DataGrid tartalma a böngészőn kívül jelenik meg a Microsoft Excel alkalmazás ablakában.

  3. A legördülő listában kattintson a MIME-típus (Új ablakban) elemre, majd az Ugrás gombra.

    A DataGrid tartalma egy új webböngészőablakban található Excelben jelenik meg.

    MEGJEGYZÉS Ha megjelenik egy üzenet az Excel-fájl megnyitására vagy mentésére, kattintson a Megnyitás gombra.

  4. A legördülő listában kattintson a MIME-típusra (a keretben), majd az Ugrás gombra.

    A DataGrid tartalma a webböngészőben üzemeltetett Excel keretkészletének alsó keretében jelenik meg.

    MEGJEGYZÉS Ha megjelenik egy üzenet az Excel-fájl megnyitására vagy mentésére, kattintson a Megnyitás gombra.

Hivatkozások

További információt a Microsoft Tudásbázis alábbi cikkében talál:

296717 PRB: Az Internet Explorer arra kéri a felhasználót, hogy nyissa meg/mentse az ASP-ből streamelt Office-fájlt