P
Plateriot
I have a handy routine I tweaked from an example that Exports an Excel from a
gridview.
It's almost perfect except for the fact that I'd also like to set the page
to fit as many columns wide to each page. - For example, I have some
gridviews that have data in 12 columns, but only 10 make it in the printout,
so I get the broken overflow into undesired pages.
So of course, the header will need to repeat in those other pages.
Is there a way to set this in the code below? Or do I need to break out an
Excel Object model for dot net?
Public Shared Sub ExcelExport(ByVal gv As GridView, ByVal strFileName As
String)
'Exports an Excel spreadsheet of the named 'gv' gridview with the
named strFileName
'Requires this at the top of the module:
'Public Overrides Sub VerifyRenderingInServerForm(ByVal control As
System.Web.UI.Control)
' empty, needed for export2Excel to work.
'End Sub
HttpContext.Current.Response.Clear()
HttpContext.Current.Response.AddHeader("content-disposition",
"attachment;filename=" & strFileName & ".xls")
HttpContext.Current.Response.Charset = ""
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache)
HttpContext.Current.Response.ContentType = "application/vnd.xls"
Dim stringWrite As New System.IO.StringWriter()
Dim htmlWrite As System.Web.UI.HtmlTextWriter = New
HtmlTextWriter(stringWrite)
stringWrite.Write("<html><head><meta http-equiv=""content-type""
content=""text/html; charset=utf-8""></head><body>")
'Temporariilly remove paging and sorting to allow for plain
formatting of
'Spreadsheet
gv.AllowPaging = False
gv.AllowSorting = False
gv.DataBind()
gv.RenderControl(htmlWrite)
stringWrite.Write("</body></html>")
HttpContext.Current.Response.Write(stringWrite.ToString())
HttpContext.Current.Response.Write("<x:FitToPage/>")
HttpContext.Current.Response.[End]()
End Sub
gridview.
It's almost perfect except for the fact that I'd also like to set the page
to fit as many columns wide to each page. - For example, I have some
gridviews that have data in 12 columns, but only 10 make it in the printout,
so I get the broken overflow into undesired pages.
So of course, the header will need to repeat in those other pages.
Is there a way to set this in the code below? Or do I need to break out an
Excel Object model for dot net?
Public Shared Sub ExcelExport(ByVal gv As GridView, ByVal strFileName As
String)
'Exports an Excel spreadsheet of the named 'gv' gridview with the
named strFileName
'Requires this at the top of the module:
'Public Overrides Sub VerifyRenderingInServerForm(ByVal control As
System.Web.UI.Control)
' empty, needed for export2Excel to work.
'End Sub
HttpContext.Current.Response.Clear()
HttpContext.Current.Response.AddHeader("content-disposition",
"attachment;filename=" & strFileName & ".xls")
HttpContext.Current.Response.Charset = ""
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache)
HttpContext.Current.Response.ContentType = "application/vnd.xls"
Dim stringWrite As New System.IO.StringWriter()
Dim htmlWrite As System.Web.UI.HtmlTextWriter = New
HtmlTextWriter(stringWrite)
stringWrite.Write("<html><head><meta http-equiv=""content-type""
content=""text/html; charset=utf-8""></head><body>")
'Temporariilly remove paging and sorting to allow for plain
formatting of
'Spreadsheet
gv.AllowPaging = False
gv.AllowSorting = False
gv.DataBind()
gv.RenderControl(htmlWrite)
stringWrite.Write("</body></html>")
HttpContext.Current.Response.Write(stringWrite.ToString())
HttpContext.Current.Response.Write("<x:FitToPage/>")
HttpContext.Current.Response.[End]()
End Sub