将网页内容转换成word或excel文档的方法(c#.net)

发布时间:2013-09-19 11:33:46来源:阅读(1035)

    1.转换方法:
            一般用HTTP的Header,在header里设置几个关键字让IE知道这是什么类型,从而正确打开。
    2.C#源码:
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;

    namespace word
    {
        /**//// 
        /// htm2doc 的摘要说明。
        /// 

        public class htm2doc : System.Web.UI.Page
        {
            protected System.Web.UI.WebControls.Button Button1;
        
            private void Page_Load(object sender, System.EventArgs e)
            {        
                // 在此处放置用户代码以初始化页面
            }
            public void ExpertControl(System.Web.UI.Control source, DocumentType type)

            {
                //设置Http的头信息,编码格式
                if (type == DocumentType.Excel)
                {
                    //Excel
                    Response.AppendHeader("Content-Disposition","attachment;filename=result.xls");
                    Response.ContentType = "application/ms-excel";
                }
                else if (type == DocumentType.Word)
                {
                    //Word
                    Response.AppendHeader("Content-Disposition","attachment;filename=result.doc");
                    Response.ContentType = "application/ms-word";
                }
                Response.Charset = "utf-8";   
                Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
                //关闭控件的视图状态
                source.Page.EnableViewState =false;   
                //初始化HtmlWriter
                System.IO.StringWriter writer = new System.IO.StringWriter() ;
                System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(writer);
                source.RenderControl(htmlWriter);
                //输出
                Response.Write(writer.ToString());
                Response.End();
            }
            //文档类型枚举
            public enum DocumentType
            {
                Word,
                Excel
            }
            Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
            override protected void OnInit(EventArgs e)
            {
                //
                // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
                //
                InitializeComponent();
                base.OnInit(e);
            }
            
            /**//// 
            /// 设计器支持所需的方法 - 不要使用代码编辑器修改
            /// 此方法的内容。
            /// 

            private void InitializeComponent()
            {    
                this.Button1.Click += new System.EventHandler(this.Button1_Click);
                this.Load += new System.EventHandler(this.Page_Load);

            }
            #endregion
               //在web窗体中添加一个按钮使用该方法
            private void Button1_Click(object sender, System.EventArgs e)
            {
                    ExpertControl(this, DocumentType.Word);
            }
        }
    }3.注意点:
            在上面的代码中关键的地方就是以下两行代码:
         Response.Charset = "utf-8";   
         Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");        第一行代码设定浏览器所使用的编码为utf-8,第二行代码设定的是word和excel的编码,因为word和excel的编码一般使用的是gb2312编码,不一定和浏览器(一般默认utf-8)的一致,这也是许多网友问题所在!

关键字

上一篇: 没有了

下一篇: asp邮件发送代码