Export to Excel --but also Set Print Area

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top