从互联网打开excel文件时只打开了一个空白的excel窗口

0 投票
最新提问 6月 23 用户: 顺七自燃 (160 分)

最近新的Windows更新阻止了将GridView转储到Excel文件以便从互联网下载/打开的方法。

我的代码使用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

Excel(2013)将打开一个空白的窗口,没有任何警告或消息,为什么操作被阻止了,没有选择接受文件打开的提示。

代码在内部网站上运行,并且可以在Windows中访问组策略/设置/用户配置。

1个回答

0 投票
最新回答 6月 23 用户: 宁静致远 (340 分)

解决方案1

1)打开Excel转到文件选项

2)单击信任中心 - >信任中心设置

3)转到受保护的视图。有3个选项显示全部被点击。取消选中第一个选项 - “启用来自Internet的文件的保护视图”。在某些情况下,第一和第二选项都需要取消选中

解决方案2

卸载这些Windows更新:

  • Windows Update KB3115262(Excel 2013)
  • Windows Update KB3115130(Excel 2010)

解决方案3

导出为CSV而不是XLS,则文件将在Excel中打开,忽略信任中心的东西。

ASP.net经典用法,将页面从HTML表格格式导出为CSV,并将标题和内容类型更改为:

Response.AddHeader "content-disposition", "attachment; filename=search_results.csv"
Response.ContentType = "text/csv"

注意:换行需要写为 Response.Write (chr(10))

欢迎来到编程助手,编程方面有什么不懂的问题可以尽管在这里提问,你将会收到热心爱好者的回答。
...