Wednesday, November 10, 2010

Export to word From Asp.Net



The below C# .Net code will export the data in the data table Dt_Export to an MS word format document. This will be needed in many of the Asp.net application.
Before using this code. Make a template in word, Then save it as Word XML document (File Version 2003 ). Now open it with Notepad or an HTML / XML editor Insert a {0} symbol at the place where you would like the data to be appeared, Now when you do the String.Format {0} will be replace with the required data in the tabular format. This uses XML word format
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
System.Text.StringBuilder Row_Template = new System.Text.StringBuilder();
Row_Template.Append("<w:tr ><w:tc><w:tcPr><w:tcW w:w='2323' w:type='dxa'/></w:tcPr><w:p><w:pPr><w:jc w:val='center'/>");
Row_Template.Append("</w:pPr><w:r><w:t>{0}</w:t></w:r></w:p></w:tc>");
Row_Template.Append("<w:tc><w:tcPr><w:tcW w:w='5387' w:type='dxa'/></w:tcPr><w:p><w:pPr><w:jc w:val='center'/></w:pPr><w:r><w:t>{1}</w:t></w:r></w:p></w:tc>");
Row_Template.Append("<w:tc><w:tcPr><w:tcW w:w='2346' w:type='dxa'/></w:tcPr><w:p><w:pPr><w:jc w:val='center'/></w:pPr><w:r><w:t>{2}</w:t></w:r></w:p></w:tc></w:tr>");
  
            foreach (DataRow dr in Dt_Exprt.Rows)
            {
                Acct_NO = dr[0].ToString();
                Vnd_Name = dr[1].ToString().Replace("&", "&");
                LST_TRNSDT = Convert.ToDateTime(dr[2]).ToString("MM/dd/yyyy");
                WordDoc_RowCollection += string.Format(Row_Template.ToString(), Acct_NO, Vnd_Name, LST_TRNSDT);
            }
  
            Response.Clear();
            Response.ClearHeaders();
            Response.Charset = "";
            string attachment = "attachment; filename=MYwordDocTemplate.Doc";
            Response.ClearContent();
            Response.AppendHeader("content-disposition", attachment);
            Response.ContentType = "application/vnd.ms-word";
            Response.BufferOutput = false;
            //System.IO.StringWriter tw = new System.IO.StringWriter();
            //System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
            //DG.RenderControl(hw);
            Word_Doc = string.Format(Word_Doc, WordDoc_RowCollection);
            Response.Write(Word_Doc);
            Response.End();