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.
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.
Avviare Visual Studio .NET. Scegliere Nuovo dal menu File, quindi fare clic su Progetto.
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.
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.
Scegliere Origine HTML dal menu Visualizza per aggiungere il seguente controllo DataGrid tra i tag <form> e </form>:
Scegliere Progettazione dal menu Visualizza per tornare alla visualizzazione Progettazione.
Il
controllo DataGrid verrà visualizzato nel WebForm.
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.
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.
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>
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.
Scegliere Origine HTML dal menu Visualizza. Sostituire il contenuto della finestra del codice HTML di
origine con il seguente codice:
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 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.
Lasciare un commento su queste informazioni
Queste informazioni hanno risolto il problema?
Sì
No
Non so
Queste informazioni erano pertinenti?
Sì
No
In che modo possiamo migliorarle?
Per salvaguardare la privacy, non includere informazioni personali nei commenti.
Grazie. I commenti e suggerimenti forniti verranno utilizzati per migliorare la qualità dei contenuti di supporto tecnico. Per ulteriori opzioni di assistenza, visitare la home page del Supporto Tecnico Microsoft.