Skip to content

Instantly share code, notes, and snippets.

@mvark
Created January 8, 2015 10:23
Show Gist options
  • Select an option

  • Save mvark/098eec7404b50dd3009a to your computer and use it in GitHub Desktop.

Select an option

Save mvark/098eec7404b50dd3009a to your computer and use it in GitHub Desktop.
Add a header or footer to a dynamically generated Word document using HTML & CSS (observe line#s 32-37, 49, 73-76) - http://mvark.blogspot.in/2007/02/how-to-add-header-or-footer-to.html
<%@ Page Language="VB" %>
<script runat="server">
Public Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
'build the content for the dynamic Word document
'in HTML alongwith some Office specific style properties.
Dim strBody As New System.Text.StringBuilder("")
strBody.Append("<html " & _
"xmlns:o='urn:schemas-microsoft-com:office:office' " & _
"xmlns:w='urn:schemas-microsoft-com:office:word'" & _
"xmlns='http://www.w3.org/TR/REC-html40'>" & _
"<head><title></title>")
'The setting specifies document's view after it is downloaded as Print Layout
'instead of the default Web Layout. For the Header & Footer to be visible,
'this mode is required.
strBody.Append("<!--[if gte mso 9]>" & _
"<xml>" & _
"<w:WordDocument>" & _
"<w:View>Print</w:View>" & _
"<w:Zoom>90</w:Zoom>" & _
"<w:DoNotOptimizeForBrowser/>" & _
"</w:WordDocument>" & _
"</xml>" & _
"<![endif]-->")
'we can tweak the MsoFooter class that is referenced by the footer, as required
strBody.Append("<style>" & _
"<!-- /* Style Definitions */" & _
"p.MsoFooter, li.MsoFooter, div.MsoFooter" & _
"{margin:0in;" & _
"margin-bottom:.0001pt;" & _
"mso-pagination:widow-orphan;" & _
"tab-stops:center 3.0in right 6.0in;" & _
"font-size:12.0pt;}")
'Word uses the @page definition to store document layout settings for the entire document.
'Using @page SectionN, Word applies page formatting to individual HTML elements referenced
'through the class attribute.
'mso-footer is the style attribute related to the footer
'Refer to the topic "Page Layout and Section Breaks" & "Headers and Footers" in the
'Office XML & HTML Reference for detailed info.
strBody.Append("@page Section1" & _
" {size:8.5in 11.0in; " & _
" margin:1.0in 1.25in 1.0in 1.25in ; " & _
" mso-header-margin:.5in; " & _
" mso-footer: f1;" & _
" mso-footer-margin:.5in; mso-paper-source:0;}" & _
" div.Section1" & _
" {page:Section1;}" & _
"-->" & _
"</style></head>")
strBody.Append("<body lang=EN-US style='tab-interval:.5in'>" & _
"<div class=Section1>" & _
"<h1>A dynamically generated document with Footer</h1>" & _
"<p style='color:red'><I> This doc was generated on " & _
DateTime.Now & "</I></p><hr>")
'We are building up a big string here so that the generated doc runs into multiple pages.
For counter As Integer = 1 To 50
strBody.Append("Lorem ipsum dolor sit amet, consectetur adipisicing elit, " & _
"sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.")
Next
strBody.Append("</div>")
'Word marks and stores information for simple fields by means of the Span element with the
'mso-field-code style. Refer to the topic "Fields" in the Office XML & HTML Reference
strBody.Append("<div style='mso-element:footer' id=f1>" & _
" <p class=MsoFooter>" & _
" <span style='mso-tab-count:2'></span><span style='mso-field-code:"" PAGE ""'></span>" & _
" </p></div>" & _
"</body></html>")
'Force this content to be downloaded
'as a Word document with the name of your choice
Response.AppendHeader("Content-Type", "application/msword")
Response.AppendHeader("Content-disposition", _
"attachment; filename=myword.doc")
Response.Write(strBody)
End Sub
</script>
@mvark
Copy link
Copy Markdown
Author

mvark commented May 7, 2026

As I mentioned here - Any setting that is possible in MS Word can also be accomplished by code.

Create a small sample Word document with the layout you have in mind and then save that document as a Webpage. A HTML page is created along with dependent files in a folder with the same name as the web page. Replicate the HTML, CSS code that has been generated. This will require some experimenting.

Use the Office HTML and XML Reference to know more about specific style settings.

This code was written over a decade ago after trial & error. To implement your requirement, you can now also collaborate with an AI code assistant if you're short of time.

@moezabelshwe
Copy link
Copy Markdown

I did you gave the coding, but the header letter also showed on the body with table. I don't want to show on the body. How to do? Now showing header and the letter also showing on the body.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment