Метод сбрасывания GridView в файл Excel для загрузки/открытия из Интернета был недавно взломан с новыми обновлениями Windows.Открытие файла excel из Интернета открывает пустое окно excel
Мой код выгружается из GridView в файл XLS с использованием StringWriter, HTMLTextWriter и RenderControl. Общий подход, используя следующий код из 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) откроется пустое окно, без предупреждения или сообщения о том, почему что-то было заблокировано, и без возможности принять файл, чтобы открыть.
Мой код запускается на интрасети, и у меня есть доступ к групповым политикам/настройкам/пользовательским настройкам в Windows.
Это может быть применен только пользователем на другом конце трубы, и не все будут готовы принять этот подход. Для меня это одно решение, а не решение. – Paul
@Paul Честно говоря, единственное истинное решение, которое я нашел, - это не использовать этот блок кода больше. Если кто-то может изменить этот код и заставить его работать, я приму этот ответ. –
@paul Я представил это как стиль Q/A, чтобы ответить на мой собственный вопрос, чтобы поделиться своими знаниями. Я отредактировал этот вопрос, пытаясь лучше описать, какова моя ситуация и какие типы доступа у меня есть над моими пользователями и код в среде интрасети, в которой это работает. Это послужило для меня решением, учитывая мою ситуацию. –