以下是我用于将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
答案 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