您的位置:首页 > 编程语言 > ASP

C#语言实现ASP.NET页中数据导出

2004-08-24 22:50 435 查看
1、 数据的填充
首先建立连接对象Conn,并通过System.Configuration.ConfigurationSettings.AppSettings从全局配置文件Web.config文件中读出连接配置信息,然后通过SqlDataAdapter对象按Ls_sqlCmd指定的查询语句检索出结果并填充到DataSet对象实例ds中,然后把ds传递到自定义过程ExportData中处理,完成数据的导出工作。代码如下:
SqlConnection Conn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ExportData"]) ;
SqlDataAdapter da=new SqlDataAdapter(Ls_SqlCmd,sqlConnection);
DataSet ds=new DataSet();
da.Fill(ds," ExportDataTable ");
ExportData(ds,DDL_dclx.SelectedValue,"ExportFile."+(DDL_dclx.SelectedValue=="1"?"XLS":"XML" ));
2、 ExportData过程的实现
该过程有三个参数:第一个是DataSet,传递要处理的查询数据;第二个是String,标识我们导出的文件格式,第三个也是String,指定导出文件的名字。其代码如下:
/*定义HttpResponse对象,并且用Page.Response对其进行初始化,指定输出流HTTP字符集为中文简体,往输出流中加入HTTP头标识,指定数据处理结束时结果的处理方式*/
HttpResponse resp;
resp = Page.Response;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
string colHeaders= "", ls_item="";
int i,j;

/*定义表对象与行对像,同时用DataSet对其值进行初始化*/
DataTable dt=ds.Tables[0];
DataRow[] myRow=dt.Select("");
/* typeid=="1"时导出为EXCEL格式文件;typeid=="2"时导出为XML格式文件*/
if(typeid=="1")
{
/*取得数据表各列标题,各标题之间以/t分割,最后一个列标题后加回车符*/
for(i=0;i<dt.Columns.Count-1;i++)
colHeaders+=dt.Columns[i].Caption.ToString()+"/t";
colHeaders +=dt.Columns[i].Caption.ToString() +"/n";
/*向HTTP输出流中写入取得的数据信息*/
resp.Write(colHeaders);
/*逐行处理数据*/
foreach(DataRow row in myRow)
{
/*在当前行中,逐列获得数据,数据之间以/t分割,结束时加回车符/n
for(i=0;i<row.Table.Columns.Count-1;i++)
ls_item +=row[i].ToString() + "/t";
ls_item += row[i].ToString() +"/n";
/*当前行数据写入HTTP输出流,并且置空ls_item以便下行数据*/
resp.Write(ls_item);
ls_item="";
}
}
else
{
if(typeid=="2")
{
/*从DataSet中直接导出XML数据并且写到HTTP输出流中*/
resp.Write(ds.GetXml());
}
}
/*写缓冲区中的数据到HTTP头文件中*/
resp.End();
在上面的代码中,主要涉及三个方面的问题:
(1) 通过Page.Response对象设定输出流HTTP文件头,以保证以合适的编码集显示数据,同时指定数据输出流中数据的保存方式。
(2) 如果要把DataTable中的数据导出,就必须把其中的数据逐个读出,加上相关的分割标识符,写入输出流中,然后在执行Page.Response.End()时把缓冲区中的输出流数据按我们的要求写入指定的文件中
(3) 在微软的.NET战略里,ADO.NET与XML高度集成,ADO.NET中最重要的用于断开式数据处理的控件是DataSet,它对XML提供无缝支持。数据库处理和XML集成是DataSet需要实现的首要目标,所以把DataSet中的数据写入输出数据流是一件非常简单的事,通过DataSet.GetXML()方法得到XML格式的数据,然后由Page.Response.Write()直接写入输出流就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: