Tay*_*own 7 vb.net asp.net excel intranet
最近,新的Windows更新破坏了将GridView转储到Excel文件以从Internet下载/打开的方法.
我的代码使用StringWriter,HTMLTextWriter和RenderControl从GridView转储到XLS文件.使用以下代码的常用方法来自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
Run Code Online (Sandbox Code Playgroud)
Excel(2013)将打开一个空白窗口,没有任何警告或消息,说明为什么阻止了任何内容,并且没有选择接受要打开的文件.
我的代码在Intranet站点上运行,我可以访问Windows中的组策略/设置/用户配置.
解决方案1
1)打开Excel转到文件选项
2)单击信任中心 - >信任中心设置
3)转到受保护的视图.有3个选项显示全部被点击.取消选中第一个选项 - "为来自Internet的文件启用受保护的视图".在下面的评论中报告的某些情况下,第1和第2选项都需要取消选中(谢谢@mosheb)
解决方案2
卸载这些Windows更新: