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

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
{
/**////<summary>
///htm2doc的摘要说明。
///</summary>

publicclasshtm2doc:System.Web.UI.Page
{
protectedSystem.Web.UI.WebControls.ButtonButton1;

privatevoidPage_Load(objectsender,System.EventArgse)
{
//在此处放置用户代码以初始化页面
}

publicvoidExpertControl(System.Web.UI.Controlsource,DocumentTypetype)

{
//设置Http的头信息,编码格式
if(type==DocumentType.Excel)
{
//Excel
Response.AppendHeader("Content-Disposition","attachment;filename=result.xls");
Response.ContentType
="application/ms-excel";
}

elseif(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.StringWriterwriter=newSystem.IO.StringWriter();
System.Web.UI.HtmlTextWriterhtmlWriter
=newSystem.Web.UI.HtmlTextWriter(writer);
source.RenderControl(htmlWriter);
//输出
Response.Write(writer.ToString());
Response.End();
}

//文档类型枚举
publicenumDocumentType
{
Word,
Excel
}

Web窗体设计器生成的代码#regionWeb窗体设计器生成的代码
overrideprotectedvoidOnInit(EventArgse)
{
//
//CODEGEN:该调用是ASP.NETWeb窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}


/**////<summary>
///设计器支持所需的方法-不要使用代码编辑器修改
///此方法的内容。
///</summary>

privatevoidInitializeComponent()
{
this.Button1.Click+=newSystem.EventHandler(this.Button1_Click);
this.Load+=newSystem.EventHandler(this.Page_Load);

}

#endregion
//在web窗体中添加一个按钮使用该方法
privatevoidButton1_Click(objectsender,System.EventArgse)
{
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)的一致,这也是许多网友问题所在!

你可能感兴趣的:(C++,c,.net,Excel,C#)