ASP.NET页面导出为Excel文档

 

using System;
using System.Web;
using System.Data;
using System.Text;
using System.Configuration;

namespace SystemFramework
{
/// <summary>
/// Summary description for AppExcel.
/// </summary>
public class AppExcel
{
public AppExcel()
{
//
// TOD Add constructor logic here
//
}
public void getExcelFile(DataTable dtData,DataTable dtHeader,string FileName,System.Web.UI.Page Page)
{

HttpResponse resp=Page.Response;

resp.Clear();
resp.Buffer= true;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
//resp.AppendHeader("Content-Disposition", "attachment;filename=Temp.xls");
resp.AddHeader("Content-disposition","attachment; filename="+HttpUtility.UrlEncode(FileName+".xls",Encoding.UTF8 ));
resp.ContentType="application/ms-excel";
string colHeaders= "", ls_item="";
int i=0;

//取得数据表各列标题,各标题之间以/t分割,最后一个列标题后加回车符
foreach(DataRow row in dtHeader.Rows)
colHeaders+=ReplaceEnter(row[0].ToString())+"/t";
colHeaders +="/n";

//向HTTP输出流中写入取得的数据信息
resp.Write(colHeaders);

//逐行处理数据
foreach(DataRow row in dtData.Rows)
{
//在当前行中,逐列获得数据,数据之间以/t分割,结束时加回车符/n
for(i=0;i<dtData.Columns.Count;i++)
{
if(dtData.Columns[i].ColumnName.Trim().ToLower()=="bookingdate")
{
ls_item +=" "+DateTime.Parse(ReplaceEnter(row[i].ToString()).Trim()).ToString("yyyy-MM-dd hh:mm:ss")+ "/t";
}
else if(dtData.Columns[i].ColumnName.Trim().ToLower()=="cancellationdate")
{
if(row[i].ToString().Trim().Length>0)
ls_item +=" "+DateTime.Parse(ReplaceEnter(row[i].ToString()).Trim()).ToString("yyyy-MM-dd hh:mm:ss")+ "/t";
else
ls_item +=" "+"/t";
}
else if(dtData.Columns[i].ColumnName.Trim().ToLower()=="arrivaldate" || dtData.Columns[i].ColumnName.Trim().ToLower()=="departuredate")
{
ls_item +=" "+DateTime.Parse(ReplaceEnter(row[i].ToString()).Trim()).ToString("yyyy-MM-dd")+ "/t";
}
else
ls_item +=ReplaceEnter(row[i].ToString()) + "/t";
}
ls_item +="/n";
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
resp.Write(ls_item);
ls_item="";
}
resp.End();
}

//!!注意:getExcelFile函数是专用函数,要调用通用函数,请使用getExcelFileCommon()
public void getExcelFile(DataTable dtData,string FileName,System.Web.UI.Page Page)
{
HttpResponse resp=Page.Response;

resp.Clear();
resp.Buffer= true;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
//resp.AppendHeader("Content-Disposition", "attachment;filename=Temp.xls");
resp.AddHeader("Content-disposition","attachment; filename="+HttpUtility.UrlEncode(FileName+".xls",Encoding.UTF8 ));
resp.ContentType= "application/ms-excel";
string colHeaders= "", ls_item="";
int i=0;


//取得数据表各列标题,各标题之间以/t分割,最后一个列标题后加回车符
for(i=0;i<dtData.Columns.Count;i++)
colHeaders+=ReplaceEnter(dtData.Columns[i].Caption.ToString())+"/t";
colHeaders +="/n";

//向HTTP输出流中写入取得的数据信息
resp.Write(colHeaders);

//逐行处理数据
foreach(DataRow row in dtData.Rows)
{
//在当前行中,逐列获得数据,数据之间以/t分割,结束时加回车符/n
for(i=0;i<dtData.Columns.Count;i++)
{
if(dtData.Columns[i].ColumnName.Trim().ToLower()=="bookingdate")
{
ls_item +=" "+DateTime.Parse(ReplaceEnter(row[i].ToString()).Trim()).ToString("yyyy-MM-dd hh:mm:ss")+ "/t";
}
else if(dtData.Columns[i].ColumnName.Trim().ToLower()=="cancellationdate")
{
if(row[i].ToString().Trim().Length>0)
ls_item +=" "+DateTime.Parse(ReplaceEnter(row[i].ToString()).Trim()).ToString("yyyy-MM-dd hh:mm:ss")+ "/t";
else
ls_item +=" "+"/t";
}
else if(dtData.Columns[i].ColumnName.Trim().ToLower()=="arrivaldate" || dtData.Columns[i].ColumnName.Trim().ToLower()=="departuredate")
{
ls_item +=" "+DateTime.Parse(ReplaceEnter(row[i].ToString()).Trim()).ToString("yyyy-MM-dd")+ "/t";
}
else
ls_item +=ReplaceEnter(row[i].ToString()) + "/t";
}
ls_item +="/n";
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
resp.Write(ls_item);
ls_item="";
}
resp.End();
}
/// <summary>
/// 通用excel报表生成函数
/// </summary>
/// <param name="dtData"></param>
/// <param name="FileName"></param>
/// <param name="Page"></param>
/// <param name="sArrDateCloumn">日期列的列名数组</param>
public void getExcelFileCommon(DataTable dtData,string FileName,System.Web.UI.Page Page,string[] sArrDateCloumn)
{
#region 固定代码
HttpResponse resp=Page.Response;

resp.Clear();
resp.Buffer= true;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
//resp.AppendHeader("Content-Disposition", "attachment;filename=Temp.xls");
resp.AddHeader("Content-disposition","attachment; filename="+HttpUtility.UrlEncode(FileName+".xls",Encoding.UTF8 ));
resp.ContentType= "application/ms-excel";
string colHeaders= "", ls_item="";
int i=0;


//取得数据表各列标题,各标题之间以/t分割,最后一个列标题后加回车符
for(i=0;i<dtData.Columns.Count;i++)
colHeaders+=ReplaceEnter(dtData.Columns[i].Caption.ToString())+"/t";
colHeaders +="/n";

//向HTTP输出流中写入取得的数据信息
resp.Write(colHeaders);
#endregion

//逐行处理数据
bool bFinded = false;
foreach(DataRow row in dtData.Rows)
{
//在当前行中,逐列获得数据,数据之间以/t分割,结束时加回车符/n
for(i=0;i<dtData.Columns.Count;i++)
{
bFinded = false;
if(sArrDateCloumn.Length==0)
{
ls_item +=ReplaceEnter(row[i].ToString()) + "/t";
}
else
{
foreach(string ss in sArrDateCloumn)//对传入的每个日期列名数组元素
{
if(dtData.Columns[i].ColumnName.Trim().ToLower()==ss)
{
if(row[i].ToString().Trim()!="")
{
ls_item +=" "+DateTime.Parse(ReplaceEnter(row[i].ToString()).Trim()).ToString("yyyy-MM-dd")+ "/t";
bFinded = true;
break;
}
}
}
if(!bFinded)
{
ls_item +=ReplaceEnter(row[i].ToString()) + "/t";
}
}
}
ls_item +="/n";
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
resp.Write(ls_item);
ls_item="";
}
resp.End();
}
/// <summary>
/// 通用excel报表生成函数,新更正了只输出可视列:Donghongt 2006-6-14
/// </summary>
/// <param name="dtData">输出的数据源DataTable</param>
/// <param name="FileName">输出的文件名</param>
/// <param name="Page">当前页对象</param>
/// <param name="sArrDateCloumn">日期列的列名数组</param>
/// <param name="intOutPutColumn">输出列的索引号数组</param>
public void getExcelFileCommon(DataTable dtData,string FileName,System.Web.UI.Page Page,string[] sArrDateCloumn,int[] intOutPutColumn)
{
#region 固定代码
HttpResponse resp=Page.Response;

resp.Clear();
resp.Buffer= true;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
//resp.AppendHeader("Content-Disposition", "attachment;filename=Temp.xls");
resp.AddHeader("Content-disposition","attachment; filename="+HttpUtility.UrlEncode(FileName+".xls",Encoding.UTF8 ));
resp.ContentType= "application/ms-excel";
string colHeaders= "", ls_item="";


//取得数据表各列标题,各标题之间以/t分割,最后一个列标题后加回车符
foreach(int i in intOutPutColumn)
colHeaders+=ReplaceEnter(dtData.Columns[i].Caption.ToString())+"/t";
colHeaders +="/n";

//向HTTP输出流中写入取得的数据信息
resp.Write(colHeaders);
#endregion

//逐行处理数据
bool bFinded = false;
foreach(DataRow row in dtData.Rows)
{
//在当前行中,逐列获得数据,数据之间以/t分割,结束时加回车符/n
foreach(int iColumn in intOutPutColumn)
{
bFinded = false;
if(sArrDateCloumn.Length==0)
{
ls_item +=ReplaceEnter(row[iColumn].ToString()) + "/t";
}
else
{
foreach(string ss in sArrDateCloumn)//对传入的每个日期列名数组元素
{
if(dtData.Columns[iColumn].ColumnName.Trim().ToLower()==ss)
{
if(row[iColumn].ToString().Trim()!="")
{
ls_item +=" "+DateTime.Parse(ReplaceEnter(row[iColumn].ToString()).Trim()).ToString("yyyy-MM-dd")+ "/t";
bFinded = true;
break;
}
}
}
if(!bFinded)
{
ls_item +=ReplaceEnter(row[iColumn].ToString()) + "/t";
}
}
}
ls_item +="/n";
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
resp.Write(ls_item);
ls_item="";
}
resp.End();
}
//
private string ReplaceEnter(string str)
{
string s;
s=str;
if (str.Length>0)
{
s=s.Replace("/r","");
s=s.Replace("/n","");
}
return s;
}

}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值