Un metodo per scaricare un GridView in un file Excel da scaricare/aprire da Internet è stato interrotto di recente con i nuovi aggiornamenti di Windows.Aprire i file excel da Internet apre una finestra excel vuota
Il mio codice scarica da GridView in un file XLS utilizzando StringWriter, HTMLTextWriter e RenderControl. Un approccio comune utilizzando il seguente codice da http://www.aspsnippets.com/Articles/Export-GridView-to-Excel-in-ASPNet-with-Formatting-using-C-and-VBNet.aspx
Protected Sub ExportToExcel(sender As Object, e As EventArgs)
Response.Clear()
Response.Buffer = True
Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls")
Response.Charset = ""
Response.ContentType = "application/vnd.ms-excel"
Using sw As New StringWriter()
Dim hw As New HtmlTextWriter(sw)
'To Export all pages
GridView1.AllowPaging = False
Me.BindGrid()
GridView1.HeaderRow.BackColor = Color.White
For Each cell As TableCell In GridView1.HeaderRow.Cells
cell.BackColor = GridView1.HeaderStyle.BackColor
Next
For Each row As GridViewRow In GridView1.Rows
row.BackColor = Color.White
For Each cell As TableCell In row.Cells
If row.RowIndex Mod 2 = 0 Then
cell.BackColor = GridView1.AlternatingRowStyle.BackColor
Else
cell.BackColor = GridView1.RowStyle.BackColor
End If
cell.CssClass = "textmode"
Next
Next
GridView1.RenderControl(hw)
'style to format numbers to string
Dim style As String = "<style> .textmode { } </style>"
Response.Write(style)
Response.Output.Write(sw.ToString())
Response.Flush()
Response.[End]()
End Using
End Sub
Public Overrides Sub VerifyRenderingInServerForm(control As Control)
' Verifies that the control is rendered
End Sub
Excel (2013) si aprirà una finestra vuota, senza alcun avvertimento o un messaggio sul motivo per cui nulla è stato bloccato, e senza possibilità di accettare il file da aprire.
Il mio codice viene eseguito su un sito intranet e ho accesso a criteri di gruppo/impostazioni/configurazioni utente in Windows.
Questo può essere applicato solo dall'utente all'altra estremità del tubo, e non tutti saranno disposti a prendere questo approccio. Per me, questa è una soluzione alternativa e non una soluzione. – Paul
@Paul Onestamente l'unica vera soluzione che ho trovato è quella di non usare più questo blocco di codice. Se qualcuno può modificare questo codice e farlo funzionare, accetterò invece quella risposta. –
@paul Ho inviato questo come uno stile Q/A per rispondere alla mia stessa domanda per condividere le mie conoscenze. Ho modificato la domanda nel tentativo di descrivere meglio la mia situazione e i tipi di accesso che ho sui miei utenti e il codice nell'ambiente intranet in cui questo viene eseguito. Questo mi è servito come soluzione per me data la mia situazione. –