当前位置: 代码迷 >> .NET新技术 >> 哪位大侠知道.NET 生成 WORD 文档呀。帮帮忙,
  详细解决方案

哪位大侠知道.NET 生成 WORD 文档呀。帮帮忙,

热度:487   发布时间:2016-04-25 01:51:30.0
哪位大侠知道.NET 生成 WORD 文档呀。帮帮忙,在线等。
哪位大侠知道 或 有 .NET 生成 WORD 文档 的例子呀。 
  本人在做一个在线组卷的功能,要点按钮把页面上的试题 生成word 文档 并可以下载下来...
  可是在百度里搜了许多的资料, 都不行呀。 请教哪位大侠帮个忙..在线等答案..


  哪位好心人,帮帮我吧. 急呀...
 

------解决方案--------------------
private void Button13_Click(object sender, System.EventArgs e) 

this.Datagrid4.Visible=true; 
Response.Clear(); 
Response.Buffer= true; 
Response.Charset="GB2312"; 
Response.AppendHeader("Content-Disposition","attachment;filename=File1.DOC"); 
Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312"); 
Response.ContentType = "application/ms-word"; 
this.Datagrid4.EnableViewState = false; 
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(); 
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter (oStringWriter); 
this.Datagrid4.RenderControl(oHtmlTextWriter); 
Response.Write(oStringWriter.ToString()); 
Response.End(); 

在做ASP.NET项目时,会经常遇到要导出文件的问题,如将DataGrid中的数据导出到excel文件等,经常使用的是Office中的OWC组件,这个组件提供的功能很强大,在一般的项目中都可以满足当前的需要.但是这个功能强大的组件使用起来却不是很方便,不但有版本的问题,而且代码量也相对比较大.如果要利用Respone对象和相关的IO,也可以实现到处excel/word等文件,而且使用方便.
代码如下:
 System.IO.StringWriter SW = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter HTW=new System.Web.UI.HtmlTextWriter(SW);
Page.RenderControl(HTW);
//Page为要导出的对象,当前是Page,如果是DataGrid,DataList等都可以
Response.Buffer=true;
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "Response.ContentType";
//Response.ContentType是输出流的 HTTP MIME 类型
//Response.ContentType --- word文件
//application/vnd.ms-excel --- excel文件
//
Response.Charset="utf-8";
Response.ContentEncoding=System.Text.Encoding.GetEncoding("utf-8");
Response.AddHeader("Content-Disposition", "attachment;filename=XXX.doc");
//attachment --- 作为附件下载
//inline --- 在线打开
//filename如过是中文,则可以用HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8)
//进行进行编码,以解决文件名乱码的问题
Response.Write(SW.ToString());
Response.Flush();
Response.Close();


这样即可以将当前的页面导出成一个Word文件.同样原理要将DataGrid,DataList等中的内容导出为Word或Excel等类型的文件,那么只需要稍做修改代码即可.
OK了,这样比用OWC组件方便多了,但也有个小问题,那就是导出的文件从文件格式上来说不是"真正"Word或Excel类型的文件,但用Office照样能打开,没什么区别,用户是看不出来的,也不会去理会这样的事情~~~
------解决方案--------------------
http://topic.csdn.net/t/20050517/14/4013501.html
------解决方案--------------------
你直接粘贴到页面测试即可:

前台html:
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />

后台cs:
C# code
    public override void VerifyRenderingInServerForm(Control control)    {        base.VerifyRenderingInServerForm(control);    }    protected void Page_Load(object sender, EventArgs e)    {        if (!IsPostBack)        {            DataTable dt = new DataTable();            dt.Columns.Add("中文");            dt.Columns.Add("englsih");            dt.Columns.Add("id",typeof(string));            dt.Rows.Add("行不行啊", "sdasfsa","'12121252151251251");            dt.Rows.Add("行不行啊", "sdasfsa", "12121252151251251");            dt.Rows.Add("行不行啊", "sdasfsa", "12121252151251251");            dt.Rows.Add("行不行啊", "sdasfsa", "12121252151251251");            dt.Rows.Add("行不行啊", "sdasfsa", "12121252151251251");            GridView1.DataSource = dt;            GridView1.DataBind();        }    }    public override void VerifyRenderingInServerForm(Control control)    {        //base.VerifyRenderingInServerForm(control);    }    protected void Button1_Click(object sender, EventArgs e)    {        Response.Clear();        Response.Buffer = true;        Response.Charset = "GB2312";        Response.AppendHeader("Content-Disposition", "attachment;filename=out.doc");        Response.ContentType = "application/ms-word";        this.EnableViewState = false;        System.IO.StringWriter swOut = new System.IO.StringWriter();        HtmlTextWriter hTw = new HtmlTextWriter(swOut);        GridView1.RenderControl(hTw);        Response.Write(swOut.ToString());        Response.End();    }
  相关解决方案