c#怎样把windowsform窗体的数据表生成word文件

解决方案 »

  1.   


    /// <summary>
            /// 导出Excel表格
            /// </summary>
            /// <param name="data">DataTable</param>
            /// <param name="page">Page</param>
            /// <param name="columns">导出的列名中英文</param>
            /// <param name="title">表格的标题</param>
            /// <param name="fileName">导出的文件名</param>
            public void ExportExcel(DataTable data, Page page, string[] columns, string title, string fileName)
            {
                StringBuilder sb = new StringBuilder();            string[] chColumns = new string[] { };//中文标题
                string[] enColumns = new string[] { };//对象属性            if (!string.IsNullOrEmpty(columns[0]))
                {
                    chColumns = columns[0].Split(';');
                    enColumns = columns[1].Split(';');
                }            sb.Append("<meta HTTP-EQUIV=\"content-type\" CONTENT=\"text/html; charset=utf-8\"><table border=\"1\" cellSpacing=\"0\" cellPadding=\"0\" width=\"100%\" >");
                sb.Append("<tr><td colspan=\"" + enColumns.Length + "\" align=\"center\" style=\"font-size:24px; font-weight:bold;\">" + title + "</td></tr>");
                sb.Append("<tr>");            //创建表头
                if (chColumns.Length > 0)
                {
                    for (int i = 0; i < chColumns.Length; i++)
                    {
                        sb.Append("<td align=\"center\" style=\"font-weight:bold;\">" + chColumns[i] + "</td>");
                    }
                }
                sb.Append("</tr>");            //添加内容
                for (int i = 0; i < data.Rows.Count; i++)
                {
                    sb.Append("<tr>");
                    for (int j = 0; j < enColumns.Length; j++)
                    {
                        sb.Append("<td align=\"center\">" +data.Rows[i][j].ToString() + "</td>");            //获取list对象中的属性值
                    }
                    sb.Append("</tr>");
                }            sb.Append("</table>");            WriteFile(sb,page,fileName);
            }
      

  2.   


    /// <summary>
            /// 将StringBuilder写入流
            /// </summary>
            /// <param name="sb">StringBuilder对象</param>
            /// <param name="page">Page</param>
            /// <param name="fileName">导出文件名</param>
            private void WriteFile(StringBuilder sb,Page page,string fileName)
            {
                page.Response.Buffer = true;
                page.Response.Clear();
                page.Response.ClearContent();
                page.Response.ClearHeaders();            page.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName + ".xls", System.Text.Encoding.UTF8));
                page.Response.ContentType = "application/ms-excel";            page.Response.Charset = "UTF-8";
                page.Response.HeaderEncoding = System.Text.Encoding.UTF8;
                page.Response.ContentEncoding = System.Text.Encoding.UTF8;            System.IO.StringWriter writer = new System.IO.StringWriter(sb);
                System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(writer);            //关闭流
                htmlWriter.Close();
                writer.Close();            //输出
                page.Response.Write(writer);
                page.Response.End();
            }
      

  3.   

         page.Response.ContentType = "application/ms-excel";
    fileName + ".xls", 
     改成     page.Response.ContentType = "application/ms-word"; filename+“。doc”