其实,利用ASP.NET输出指定内容的WORD、EXCEL、TXT、HTM等类型的文档很容易的。主要分为三步来完成。
: F1 z8 I& M u( h; r" ]/ ^3 Q. @% |, N6 h- Q
一、定义文档类型、字符编码
2 J- i0 v2 i; J0 S7 D Response.Clear(); Response.Buffer= true; , R0 S! \& M2 p0 H4 b+ v* u
Response.Charset="utf-8";
/ j: m' ]% A0 c //下面这行很重要, attachment 参数表示作为附件下载,您可以改成 online在线打开
, ^+ G& j6 ~6 v! X, I8 z2 C3 v //filename=FileFlow.xls 指定输出文件的名称,注意其扩展名和指定文件类型相符,可以为:.doc .xls .txt .htm ) T+ ]$ t( a, M) p# W- x5 X' X
Response.AppendHeader("Content-Disposition","attachment;filename=FileFlow.xls"); / }7 p# R6 O- q
Response.ContentEncoding=System.Text.Encoding.GetEncoding("utf-8"); 9 k- w. D- l! U5 H# t; d, v6 }
//Response.ContentType指定文件类型 可以为application/ms-excel application/ms-word application/ms-txt application/ms-html 或其他浏览器可直接支持文档 3 d+ ], F) i6 n0 ^, e: l
Response.ContentType = "application/ms-excel";
" [0 _1 @. u8 ^. b# l this.EnableViewState = false; ! E, c, j9 d% A( |3 [
- u6 }4 F9 c2 Q7 N, Y 二、定义一个输入流 2 F$ S0 A3 J% [: j9 H" j1 u
4 ?" f! S* K; Q) \+ _; B1 m
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);. b+ G1 ~" r9 w) U& X
, }- s; C1 r) U9 P* e8 X
三、将目标数据绑定到输入流输出
5 F" j" |0 Q, n7 f9 ^4 F9 N$ V. @3 j/ `
this.RenderControl(oHtmlTextWriter); //this 表示输出本页,你也可以绑定datagrid,或其他支持obj.RenderControl()属性的控件
% E* S2 J3 q6 a! C8 ? Response.Write(oStringWriter.ToString()); 2 v ^( a3 U4 n' c. [( F; z
Response.End(); / |" f5 V. q" \, }7 C, k: W+ T' P
/ ` ~5 L: r7 @# J; o# w
总结:本例程在Microsoft Visual Studio .NET 2003平台下测试通过,适用于C#和VB,当采用VB的时候将 this 关键字改成 me 。 |