將GridView轉儲到Excel文件從Internet上下載/打開的方法最近被新的Windows更新中斷。從互聯網上打開excel文件打開一個空白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年)使用下面的代碼的常用方法將打開一個空白窗口,沒有警告或消息,爲什麼任何被封鎖,並沒有選擇接受要打開的文件。
我的代碼在Intranet站點上運行,我可以訪問Windows中的組策略/設置/用戶配置。
這隻能由用戶在管道的另一端被應用,而不是人人都願意採取這種方式。對我而言,這是一種解決方法,而不是解決方案。 – Paul
@Paul老實說,我發現的唯一真正的解決方案是不再使用這塊代碼。如果任何人都可以改變這個代碼並使其工作,我會接受該答案。 –
@paul我將此作爲Q/A風格提交以回答我自己的問題以分享我的知識。我編輯了這個問題,目的是爲了更好地描述我的情況以及我在用戶和Intranet環境中運行的代碼的訪問類型。這對我來說是一個解決方案。 –