Help and Support

Artikel-ID: 317719 - Geändert am: Dienstag, 3. Februar 2004 - Version: 5.1

SO WIRD´S GEMACHT: Exportieren von Daten in einem DataGrid auf einem ASP . NET-Webformular nach Microsoft Excel

Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
317719  (http://support.microsoft.com/kb/317719/EN-US/ ) HOW TO: Export Data in a DataGrid on an ASP . NET WebForm to Microsoft Excel
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.

Auf dieser Seite

Alles erweitern | Alles schließen

Zusammenfassung

Diese Anleitung beschreibt Schritt für Schritt, wie Sie ein Webserver-Steuerelement des Typs DataGrid auf einem ASP.NET-Webformular ausfüllen und dann den Inhalt von DataGrid nach Microsoft Excel exportieren können.

Verfahren

Dieser Artikel beschreibt zwei Verfahren zum Exportieren der in einem DataGrid enthaltenen Daten:
  • Verwendung des Excel-MIME-Typs (oder -Inhaltstyps)

    Mit einem serverseitigen Code können Sie das DataGrid an Ihre Daten binden und auf einem Clientcomputer in Excel öffnen. Legen Sie hierzu die Eigenschaft ContentType (Inhaltstyp) auf application/vnd.ms-excel fest. Nachdem der Client den neuen Datenstrom empfangen hat, werden die Daten in Excel so angezeigt, als hätten Sie die Inhalte als neue Seite in einem Webbrowser geöffnet.
  • Verwendung der Excel-Automatisierung

    Mit einem clientseitigen Code können Sie den HTML-Code aus dem DataGrid extrahieren und dann Excel so automatisieren, dass der HTML-Code in einer neuen Arbeitsmappe angezeigt wird. Mit der Excel-Automatisierung werden die Daten immer außerhalb des Browsers in einem Excel-Anwendungsfenster angezeigt. Einer der Vorteile der Automatisierung ist, dass Sie Excel programmatisch steuern können, falls Sie die Arbeitsmappe nach dem Exportieren der Daten modifizieren möchten. Da Excel jedoch nicht als "Sicher für Skripting" gekennzeichnet ist, müssen Ihre Clients entsprechende Sicherheitseinstellungen im Webbrowser übernehmen, die die Automatisierung zulassen.

Schritt für Schritt


Achtung: Die in diesem Artikel aufgeführten Codebeispiele basieren auf den Beispieldatenbanken der englischsprachigen Versionen von Microsoft SQL Server oder Microsoft Access. Sie können diese Beispiele nicht mit den deutschsprachigen Beispieldatenbanken von SQL Server oder Access verwenden. Verwenden Sie bitte entweder die englischsprachigen Versionen dieser Datenbanken, oder passen Sie die Codebeispiele so an, dass sie auf die deutschen Beispieldatenbanken und die deutschsprachigen Datenbankobjekte verweisen.
  1. Starten Sie Visual Studio .NET. Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.
  2. Klicken Sie im Bereich Projekttypen auf Visual Basic-Projekte. Klicken Sie unter Vorlagen auf ASP.NET-Webanwendung. Geben Sie der Anwendung den Namen ExcelExport, und klicken Sie anschließend auf OK.

    WebForm1 wird Ihnen in der Entwurfsansicht angezeigt.
  3. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf WebForm1.aspx. Klicken Sie dann auf Umbenennen. Ändern Sie den Namen der Datei zu Bottom.aspx.
  4. Klicken Sie im Menü Ansicht auf HTML-Quelle, um das folgende DataGrid zwischen den Tags <form> und </form> einzufügen:
    <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. Klicken Sie im Menü Ansicht auf Entwurf, um wieder in die Entwurfsansicht zu wechseln.

    Das DataGrid wird auf dem Webformular angezeigt.
  6. Klicken Sie im Menü Ansicht auf Code, um sich den Code hinter dem Webformular anzeigen zu lassen. Fügen Sie den folgenden Code dem Ereignishandler Page_Load hinzu:

    Hinweis: Bevor Sie diesen Code ausführen, müssen Sie für User ID <username> und password=<strong password> die korrekten Werte eintragen. Stellen Sie sicher, dass das Benutzerkonto die richtigen Berechtigungen zur Ausführung dieser Operationen in der Datenbank besitzt.
    ' 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
    						
    Hinweis: Ersetzen Sie in diesem Code SQLServer durch den Namen Ihres SQL-Servers. Falls Sie keinen Zugang zu einem SQL-Server haben, auf dem die Beispieldatenbank "Nordwind" gespeichert ist, ändern Sie die Verbindungszeichenfolge so, dass die Microsoft Access 2002-Beispieldatenbank "Nordwind" verwendet wird:
    provider=microsoft.jet.oledb.4.0; data source=C:\Programme\Microsoft Office\Office10\Samples\Northwind.mdb
    Falls Sie sich für dieses Verfahren entscheiden, modifizieren Sie den vorstehend angegebenen Code so, dass der Namespace OleDbClient und nicht der Namespace SqlClient verwendet wird.
  7. Klicken Sie im Menü Projekt auf HTML-Seite hinzufügen. Geben Sie der Seite den Namen Top.htm, und klicken Sie anschließend auf Öffnen.

    Die Seite "Top.htm" wird in der Entwurfsansicht angezeigt.
  8. Klicken Sie im Menü Ansicht auf HTML-Quelle. Ersetzen Sie den Inhalt des HTML-Quellenfensters durch den folgenden Code:
    <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. Klicken Sie im Menü Projekt auf HTML-Seite hinzufügen. Geben Sie der Seite den Namen Frameset.htm, und klicken Sie anschließend auf Öffnen.

    "Frameset.htm" wird in der Entwurfsansicht geöffnet.
  10. Klicken Sie im Menü Ansicht auf HTML-Quelle. Ersetzen Sie den Inhalt des HTML-Quellenfensters durch den folgenden Code:
    <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. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Frameset.htm, und klicken Sie danach auf Als Startseite festlegen.
  12. Klicken Sie im Menü Erstellen auf Projektmappe erstellen.

Probieren Sie es einfach!

  1. Klicken Sie im Menü Debuggen auf Starten ohne Debuggen, um die Anwendung auszuführen.

    Nachdem das Frameset im Webbrowser geöffnet wurde, zeigt das DataGrid im unteren Frame die Daten aus der Nordwind-Datenbank.
  2. Klicken Sie in der Dropdown-Liste auf Automatisierung, und klicken Sie danach auf Gehe zu.

    Der Inhalt des DataGrid wird außerhalb des Browsers im Microsoft Excel-Anwendungsfenster angezeigt.
  3. Klicken Sie in der Dropdown-Liste auf MIME Type (In a New Window), und klicken Sie danach auf Gehe zu.

    Der Inhalt von DataGrid wird in Excel in einem neuen Browserfenster angezeigt.

    Hinweis: Wenn Sie gefragt werden, ob Sie die Excel-Datei öffnen oder speichern möchten. klicken Sie auf Öffnen.
  4. Klicken Sie in der Dropdown-Liste auf MIME Type (In the Frame), und klicken Sie danach auf Gehe zu.

    Der Inhalt des DataGrid wird im unteren Frame des Framesets in Excel (in den Webbrowser eingebettet) angezeigt.

    Hinweis: Wenn Sie gefragt werden, ob Sie die Excel-Datei öffnen oder speichern möchten. klicken Sie auf Öffnen.

Informationsquellen

Weitere Informationen finden Sie in folgenden Artikeln der Microsoft Knowledge Base:
199841  (http://support.microsoft.com/kb/199841/DE/ ) HOWTO: Display ASP Results Using Excel in IE with MIME Types
271572  (http://support.microsoft.com/kb/271572/DE/ ) HOWTO: Format an Excel Workbook While Streaming MIME Content
296717  (http://support.microsoft.com/kb/296717/DE/ ) PRB: Internet Explorer Prompts User to Open/Save Office File Streamed from ASP
264143  (http://support.microsoft.com/kb/264143/DE/ ) FIX: ASP Session Variables Empty When Office 2000 MIME Types Are Streamed with Internet Explorer
266263  (http://support.microsoft.com/kb/266263/DE/ ) BUG: Word 2000 and Excel 2000 Display ASP Source When Using MIME Type to Stream Data


Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft ASP.NET 1.0
  • Microsoft Excel 2002 Standard Edition
Keywords: 
kbhowtomaster KB317719
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

SPRACHE AUSWÄHLEN

 

Related Support Centers