ASP.NET中导出excel/word等类型文件的简单方法
在做
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();
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
照样能打开
,
没什么区别
,
用户是看不出来的
,
也不会去理会这样的事情
~~~