Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net Vb.net将gridview导出到excel_Asp.net_Vb.net_Excel_Gridview - Fatal编程技术网

Asp.net Vb.net将gridview导出到excel

Asp.net Vb.net将gridview导出到excel,asp.net,vb.net,excel,gridview,Asp.net,Vb.net,Excel,Gridview,将gridview导出到excel文件时遇到问题。一切正常,但当我点击“导出”按钮时,应该导出到excel文件的数据会显示在网页上。我怀疑这是Response.ContentType和我指定的文件名的问题。然而,我已经阅读了多个文档和示例,这两个似乎不是我案例中的根本问题。有人能帮忙吗 <asp:Button ID="btnExport" runat="server" Text="Export To MS Excel File" CssClass="btnMain" OnClick="bt

将gridview导出到excel文件时遇到问题。一切正常,但当我点击“导出”按钮时,应该导出到excel文件的数据会显示在网页上。我怀疑这是Response.ContentType和我指定的文件名的问题。然而,我已经阅读了多个文档和示例,这两个似乎不是我案例中的根本问题。有人能帮忙吗

<asp:Button ID="btnExport" runat="server" Text="Export To MS Excel File" CssClass="btnMain" OnClick="btnExport_Click" />    




Protected Sub btnExport_Click(ByVal sender As Object, ByVal e As System.EventArgs) 

        Dim filename As String = "PerformanceEval Status Report" & Date.Now.Year.ToString & "-" & _
                                    formatNumberTo2Digits(DateTime.Now.Month) & "-" & formatNumberTo2Digits(DateTime.Now.Day) & ".xls"

        With Page.Response

            .Clear()
            .Buffer = True
            .AddHeader("content_disposition", "attachment;filename" & filename)
            .Charset = ""

            '--to open the Excel file without saving then comment out the line below
            '.Cache.SetCacheability(HttpCacheability.NoCache)

            '.ContentType = "application/vnd.xls"   'data appears on web page 
            '.ContentType = "application/vnd.ms-excel"  'try to download .aspx document NOT .xml
            .ContentType = "application/ms-excel"  'data appears on web page 

        End With


        Dim strWriter As New System.IO.StringWriter
        Dim htmlWriter As System.Web.UI.HtmlTextWriter = New HtmlTextWriter(strWriter)

        Dim gvexport As GridView = New GridView
        gvexport.AutoGenerateColumns = False
        gvexport.CssClass = "gridData"
        gvexport.GridLines = GridLines.Horizontal
        gvexport.HeaderStyle.CssClass = "gridHeader"
        gvexport.RowStyle.CssClass = "gridRow"
        gvexport.AlternatingRowStyle.CssClass = "gridRow_Alt"
        gvexport.FooterStyle.CssClass = "gridFooter"

        Dim dv As DataView = New DataView(Me.ds.Tables(0))  'default is sorted by last name
        'Dim dv As DataView = New DataView(Me.ds.Tables(0))
        dv.RowFilter = GetFilter()

        '-- add columns for report
        addGVcolumn("Employee Name", "EmployeeName", gvexport, -1, HorizontalAlign.Left)
        addGVcolumn("Employee ID", "SID", gvexport, -1, HorizontalAlign.Left)
        addGVcolumn("Email", "WorkEmail", gvexport, -1, HorizontalAlign.Left)
        addGVcolumn("StatusID", "StatusID", gvexport, 50, HorizontalAlign.Center)

        gvexport.DataSource = dv
        gvexport.DataBind()

        gvexport.RenderControl(htmlWriter)

        Response.Output.Write(strWriter.ToString())

        Response.Flush()
        Response.End()

同样,我能够生成内容,但无法将数据导出到excel中。非常感谢

您给出了错误的标题:

.AddHeader "content-disposition", "attachment; filename="& filename &";"

你的答案是c耶!非常感谢你!这真让我高兴对于内容类型,我需要将其更改为application/vnd.ms-excel以使其正常工作!为什么我需要那个分号?为什么这个示例没有显示它?另外,为什么我指定的文件名似乎不是excel的文件名。文件名为admindefault.xls,这是此用户控件所在的.aspx页。有什么想法吗?多谢各位@CYC0616最后的分号可能不是必需的。它是一个标题字段分隔符。我举了一个例子。在你提出问题后,我查阅了RFC2183。根据我的经验,文件名取决于浏览器。有些浏览器给文件命名页面,有些浏览器给文件命名页面,我甚至看到浏览器Opera11?选择的默认名称?。