Identificativo articolo: 317719 - Ultima modifica: martedì 26 settembre 2006 - Revisione: 6.2

Esportazione di dati in un DataGrid di un WebForm ASP. NET in Microsoft Excel

In questa pagina

Espandi tutto | Chiudi tutto

Sommario

Utilizzare queste informazioni dettagliate per popolare un controllo del server Web DataGrid in un WebForm ASP.NET ed esportare il contenuto di DataGrid in Microsoft Excel.

Tecniche

In questo articolo vengono descritte due tecniche per esportare i dati del controllo DataGrid:
  • Utilizzo del tipo MIME di Excel (o tipo di contenuto)

    Con il codice lato server è possibile associare il controllo DataGrid ai dati e fare in modo che questi ultimi si aprano in Excel in un computer client. Per effettuare questa operazione, impostare il controllo ContentType su application/vnd.ms-excel. Dopo che il client ha ricevuto il nuovo flusso, i dati verranno visualizzati in Excel come se il contenuto venisse aperto come nuova pagina nel browser.
  • Utilizzo dell'automazione di Excel

    Con il codice lato client è possibile estrarre il codice HTML dal controllo DataGrid e automatizzare Excel perché il codice HTML venga visualizzato in una nuova cartella di lavoro. Con l'automazione di Excel i dati verranno sempre visualizzati all'esterno del browser in una finestra di Excel. Un vantaggio dell'automazione deriva dal fatto che è possibile controllare in modo programmatico Excel se si desidera modificare la cartella di lavoro dopo l'esportazione dei dati. Tuttavia, dato che non si tratta di un'applicazione protetta per la creazione di script, i client devono applicare impostazioni di protezione nel browser che consentono l'automazione.

Procedura

  1. Avviare Visual Studio .NET. Scegliere Nuovo dal menu File, quindi fare clic su Progetto.
  2. Nel riquadro Tipi progetto fare clic su Progetti di Visual Basic. In corrispondenza di Modelli fare clic su Applicazione Web ASP.NET. Assegnare all'applicazione il nome ExcelExport e scegliere OK.

    WebForm1 verrà automaticamente presentato in visualizzazione Progettazione.
  3. In Esplora soluzioni fare clic con il pulsante destro del mouse su WebForm1.aspx, quindi scegliere Rinomina. Cambiare il nome del file in Bottom.aspx.
  4. Scegliere Origine HTML dal menu Visualizza per aggiungere il seguente controllo DataGrid tra i tag <form> e </form>:
    <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. Scegliere Progettazione dal menu Visualizza per tornare alla visualizzazione Progettazione.

    Il controllo DataGrid verrà visualizzato nel WebForm.
  6. Scegliere Codice dal menu Visualizza per visualizzare il codice relativo al WebForm. Aggiungere il codice riportato di seguito al gestore di eventi Page_Load:

    Nota È necessario modificare l'ID utente <username> e la password=<strong password> con i valori corretti prima di eseguire il codice. Verificare che l'account utente disponga delle autorizzazioni appropriate per effettuare questa operazione nel database.
    ' 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
    NOTA: sostituire SQLServer nel codice con il nome del server SQL in uso. Se non si dispone di accesso a un server SQL che contiene il database di esempio Northwind, è possibile modificare la stringa di connessione in modo da utilizzare il database di esempio Northwind di Microsoft Access 2002:
    provider=microsoft.jet.oledb.4.0; data source=C:\Programmi\Microsoft Office\Office10\Samples\Northwind.mdb
    Se si seleziona questo metodo, modificare il codice sopramenzionato in modo da utilizzare lo spazio dei nomi OleDbClient invece dello spazio dei nomi SqlClient.
  7. Scegliere Aggiungi pagina HTML dal menu Progetto. Assegnare alla pagina il nome Top.htm e scegliere Apri.

    Il file Top.htm verrà presentato in visualizzazione Progettazione.
  8. Scegliere Origine HTML dal menu Visualizza. Sostituire il contenuto della finestra del codice HTML di origine con il seguente codice:
    <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. Scegliere Aggiungi pagina HTML dal menu Progetto. Assegnare alla pagina il nome Frameset.htm e scegliere Apri.

    Il file Frameset.htm verrà presentato in visualizzazione Progettazione.
  10. Scegliere Origine HTML dal menu Visualizza. Sostituire il contenuto della finestra del codice HTML di origine con il seguente codice:
    <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. In Esplora soluzioni fare clic con il pulsante destro del mouse su Frameset.htm, quindi scegliere Imposta come pagina iniziale.
  12. Scegliere Genera soluzione dal menu Genera.

Esercizio

  1. Scegliere Avvia senza eseguire debug dal menu Debug per eseguire l'applicazione.

    Quando la pagina con frame si apre nel browser, il controllo DataGrid del frame inferiore mostra i dati del database Northwind.
  2. Nella casella di riepilogo a discesa selezionare Automazione, quindi scegliere Vai.

    Il contenuto di DataGrid verrà visualizzato all'esterno del browser nella finestra di Microsoft Excel.
  3. Nella casella di riepilogo a discesa selezionare l'opzione relativa al tipo MIME in un'altra finestra, quindi scegliere Vai.

    Il contenuto di DataGrid verrà visualizzato in Excel ospitato in una nuova finestra del browser.

    NOTA: se viene visualizzata un'istruzione per aprire o salvare il file di Excel, scegliere Apri.
  4. Nella casella di riepilogo a discesa selezionare l'opzione relativa al tipo MIME nel frame e scegliere Vai.

    Il contenuto di DataGrid verrà visualizzato nel frame inferiore della pagina con frame in Excel ospitato nel browser.

    NOTA: se viene visualizzata un'istruzione per aprire o salvare il file di Excel, scegliere Apri.

Riferimenti

Per ulteriori informazioni, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportati di seguito:
199841  (http://support.microsoft.com/kb/199841/ ) Visualizzazione dei risultati ASP utilizzando Excel in IE con tipi MIME
271572  (http://support.microsoft.com/kb/271572/ ) Formattazione di una cartella di lavoro di Excel durante il processo di flusso del contenuto MIME
296717  (http://support.microsoft.com/kb/296717/ ) PRB: Richiesta di apertura/salvataggio di file di Office trasmessi come flusso dalle pagine ASP in Internet Explorer
264143  (http://support.microsoft.com/kb/264143/ ) FIX: Variabili di sessione ASP vuote quando i tipi MIME di Office 2000 vengono trasmessi come flusso con Internet Explorer
266263  (http://support.microsoft.com/kb/266263/ ) CORREZIONE: Visualizzazione dell'origine ASP in Word 2000 e Excel 2000 durante l'utilizzo di tipi MIME per il flusso di dati


Le informazioni in questo articolo si applicano a:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft ASP.NET 1.0
Chiavi: 
kbhowtomaster KB317719
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.
 

Traduzione articoli

 

Related Support Centers