Eine Methode zum Downloaden einer GridView in eine Excel-Datei zum Herunterladen/Öffnen aus dem Internet wurde kürzlich mit neuen Windows-Updates gebrochen.Öffnen von Excel-Dateien aus dem Internet öffnet ein leeres Excel-Fenster
Mein Code wird mit StringWriter, HTMLTextWriter und RenderControl von einer GridView in eine XLS-Datei geschrieben. Ein gemeinsamer Ansatz den folgenden Code aus 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) unter Verwendung öffnet in ein leeres Fenster, ohne Warnung oder Meldung an, warum alles blockiert war, und ohne Möglichkeit, die Datei zu akzeptieren, zu öffnen.
Mein Code wird auf einer Intranetsite ausgeführt, und ich habe Zugriff auf Gruppenrichtlinien/Einstellungen/Benutzerkonfigurationen in Windows.
Dies kann nur durch den Benutzer am anderen Ende des Rohres aufgebracht werden, und nicht jeder wird bereit sein, diesen Ansatz zu nehmen. Für mich ist dies eine einmalige Lösung und keine Lösung. – Paul
@Paul Ehrlich gesagt ist die einzig wahre Lösung, die ich gefunden habe, diesen Code nicht mehr zu verwenden. Wenn jemand diesen Code ändern und es funktionieren lassen kann, werde ich stattdessen diese Antwort akzeptieren. –
@paul Ich habe dies als Q/A-Stil eingereicht, um meine eigene Frage zu beantworten und mein Wissen zu teilen. Ich habe die Frage bearbeitet, um besser zu beschreiben, was meine Situation war und welche Arten von Zugriff ich über meine Benutzer und Code in der Intranet-Umgebung habe, in der diese läuft. Dies hat mir als Lösung für meine Situation gedient. –