VB ASP.Net导出到Excel:名称工作表选项卡

时间:2012-04-25 14:53:13

标签: asp.net vb.net export-to-excel

以下是我用于将gridview数据导出到Excel的方法。用户询问我是否可以命名工作表选项卡。有任何想法吗?提前谢谢!

Private Sub btnExportToExcel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExportToExcel.Click        
    Dim form As New HtmlForm
    Dim strAttachment As String
    Dim stw As StringWriter
    Dim htextw As HtmlTextWriter

        stw = New StringWriter
        strAttachment = "attachment; filename=" & strAppName & ".xls"
        HttpContext.Current.Response.ClearContent()
        HttpContext.Current.Response.AddHeader("content-disposition", strAttachment)
        HttpContext.Current.Response.ContentType = "application/vnd.ms-excel"
        htextw = New HtmlTextWriter(stw)
        form.Controls.Add(CType(Session("gridViewControl"), Control))
        Me.Controls.Add(form)
        form.RenderControl(htextw)
        Response.Write("<b>" & txtTitle.Text & "</b><br />")
        Response.Write(stw.ToString())            
        Response.Flush()
        Response.Close()
        HttpContext.Current.ApplicationInstance.CompleteRequest()

End Sub

3 个答案:

答案 0 :(得分:1)

这是不可能的,因为你的输出实际上是带有HTML表的HTML - Excel会很乐意“解析”/翻译成行和列(因为这就是表格)。您并没有真正创建“本机”Excel文件。

您可以使用 Excel XML 使用原生.Net( LINQ to XML ),有更多选项(假设您的所有客户都拥有Excel),不要害怕那个词)。我相信Excel XML支持可以追溯到Office 2003(甚至可能是Office XP / 2002,但我可能错了)。

你可以在C#或VB.net中这样做,但在VB.net中,由于VB.Net的 XML文字,它几乎是微不足道的。请参阅this MSDN video by Beth Massi获取灵感(魔法从5点左右开始,但整个视频每分钟都值得一试)。

答案 1 :(得分:0)

不,使用此方法无法做到这一点。您必须使用像Gembox这样的专门库来执行此操作。

答案 2 :(得分:0)

您无法通过html执行此操作,但您可以通过xml(SpreadsheetML)执行此操作。看看我在答案中发布的样本:
Generating an Excel file in ASP.NET