[ASP.NET]完美实现导出Table为Word或Excel

 【原创内容,转载请注明作者】

ContractedBlock.gif ExpandedBlockStart.gif HtmlDataToDoc
 
   
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 using System.IO;
5 using System.Web;
6 using System.Web.UI;
7 using System.Web.UI.WebControls;
8
9 namespace FileManageDll
10 {
11 /// <summary>
12 /// 需要在调用的页面中必须重写VerifyRenderingInServerForm方法,否则将出现错误
13 /// public override void VerifyRenderingInServerForm( Control control )
14 /// {
15 /// }
16 ///
17 /// </summary>
18 public class HtmlDataToDoc
19 {
20 private Page _InvokePage;
21 /// <summary>
22 /// 调用的页面
23 /// </summary>
24 public Page InvokePage
25 {
26 get { return _InvokePage; }
27 set { _InvokePage = value; }
28 }
29
30 /// <summary>
31 /// 构造函数
32 /// </summary>
33 /// <param name="invoke_page"> 调用的页面,参数传this.Page </param>
34 public HtmlDataToDoc(Page invoke_page)
35 {
36 _InvokePage = invoke_page;
37 }
38
39 /// <summary>
40 /// Table导出excel
41 /// </summary>
42 /// <param name="tab"></param>
43 /// <param name="fileName"></param>
44 public void TableDataToExcel(System.Web.UI.HtmlControls.HtmlTable tab, string fileName)
45 {
46
47 if (fileName.ToLower().IndexOf( " .xls " ) == - 1 )
48 {
49 fileName = fileName + " .xls " ;
50 }
51
52 TableExport(tab, fileName, " application/ms-excel " );
53 }
54
55 /// <summary>
56 /// Table导出Word
57 /// </summary>
58 /// <param name="tab"></param>
59 /// <param name="fileName"></param>
60 public void TableDataToWord(System.Web.UI.HtmlControls.HtmlTable tab, string fileName)
61 {
62
63 if (fileName.ToLower().IndexOf( " .doc " ) == - 1 )
64 {
65 fileName = fileName + " .doc " ;
66 }
67
68 TableExport(tab, fileName, " application/ms-word " );
69 }
70
71 /// <summary>
72 /// 导入数据,保存文档
73 /// </summary>
74 /// <param name="tab"></param>
75 /// <param name="fileName"></param>
76 /// <param name="typeName"></param>
77 private void TableExport(System.Web.UI.HtmlControls.HtmlTable tab, string fileName, string typeName)
78 {
79 System.Web.HttpResponse httpResponse = _InvokePage.Response;
80 httpResponse.Clear();
81 httpResponse.Buffer = true ;
82 httpResponse.Charset = " GB2312 " ;
83 // Response.Charset = "UTF-8";
84 httpResponse.Write( " <meta http-equiv=Content-Type content=text/html;charset=GB2312> " );
85 httpResponse.AppendHeader( " Content-Disposition " , " attachment;filename= " + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8).ToString());
86 httpResponse.ContentEncoding = System.Text.Encoding.GetEncoding( " GB2312 " );
87 httpResponse.ContentType = typeName;
88 _InvokePage.EnableViewState = false ;
89 StringWriter tw = new StringWriter();
90 System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
91 tab.RenderControl(hw);
92 httpResponse.Write(tw.ToString());
93 httpResponse.End();
94 }
95 }
96

 

调用时:

 

ContractedBlock.gif ExpandedBlockStart.gif 代码
 
   
protected void btnToWord_Click( object sender, EventArgs e)
{
string fileName = " fileName.doc " ;
FileManageDll.HtmlDataToDoc hdtd
= new FileManageDll.HtmlDataToDoc( this .Page);
hdtd.TableDataToWord(
this .TableId, fileName);
}

 

 

转载于:https://www.cnblogs.com/dytsm/archive/2010/06/05/1752252.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值