Search code examples
c#asp.nethtmlexport-to-word

Generate word document and set orientation landscape with html


I try to generate word document using this code:

    HttpContext.Current.Response.Clear();
    HttpContext.Current.Response.Charset = "";

    HttpContext.Current.Response.ContentType = "application/doc";
    HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; 
    filename=" + DateTime.Now + ".doc");

    var strHTMLContent = new StringBuilder();

    strHTMLContent.Append(
        "<h1 title='Heading' align='Center'style='font-family: verdana; font 
    -size: 80 % ;color: black'><u>Document Heading</u> </h1> ");

    strHTMLContent.Append("<br>");
    strHTMLContent.Append("<table align='Center'>");

    // Row with Column headers
    strHTMLContent.Append("<tr>");
    strHTMLContent.Append("<td style='width:100px; background:# 99CC00'>
   <b>Column1 </b>  </td>");

    strHTMLContent.Append("<td style='width:100px;background:# 99CC00'>
   <b>Column2 </b>  </td>");

    strHTMLContent.Append("<td style='width:100px; background:# 99CC00'>
   <b>Column 3</b></td>");
    strHTMLContent.Append(" </tr> ");

    // First Row Data
    strHTMLContent.Append("<tr>");
    strHTMLContent.Append(
        "<td style='width:100px'></td>");
    strHTMLContent.Append(
        "<td style='width:100px'>b</td>");
    strHTMLContent.Append(
        "<td style='width:100px'>c</td>");
    strHTMLContent.Append("</tr>");

    // Second Row Data
    strHTMLContent.Append("<tr>");
    strHTMLContent.Append(
        "<td style='width:100px'>d</td>");
    strHTMLContent.Append(
        "<td style='width:100px'>e</td>");
    strHTMLContent.Append(
        "<td style='width:100px'>f</td>");
    strHTMLContent.Append("</tr>");

    strHTMLContent.Append("</table>");

    strHTMLContent.Append("<br><br>");
    strHTMLContent.Append(
        "<p align='Center'> Note : This is a dynamically 
                generated word document  </p> ");
    HttpContext.Current.Response.Write(strHTMLContent);
    //  HttpContext.Current.Response.BinaryWrite(strHTMLContent);
    HttpContext.Current.Response.End();
    HttpContext.Current.Response.Flush();

It work fine but I want to make it landscape and in Print Layout cause it appears in Web Layout Can anybody help me?


Solution

  • I found solution in this post. Solve like this:

    Response.Write("<html>")
    Response.Write("<head>")
    Response.Write("<META HTTP-EQUIV=""Content-Type"" CONTENT=""text/html; 
    charset=UTF-8"">")
    Response.Write("<meta name=ProgId content=Word.Document>")
    Response.Write("<meta name=Generator content=""Microsoft Word 9"">")
    Response.Write("<meta name=Originator content=""Microsoft Word 9"">")
    Response.Write("<style>")
    Response.Write("@page Section1 {size:595.45pt 841.7pt; margin:1.0in 1.25in 1.0in
    1.25in;mso-header-margin:.5in;mso-footer-margin:.5in;mso-paper-source:0;}")
    Response.Write("div.Section1 {page:Section1;}")
    Response.Write("@page Section2 {size:841.7pt 595.45pt;mso-page-orientation:
    landscape;margin:1.25in 1.0in 1.25in 1.0in;mso-header-margin:.5in;
    mso-footer-margin:.5in;mso-paper-source:0;}")
    Response.Write("div.Section2 {page:Section2;}")
    Response.Write("</style>")
    Response.Write("</head>")
    Response.Write("<body>")
    Response.Write("<div class=Section2>")