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()直接写入输出流就可以了。
首先建立连接对象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()直接写入输出流就可以了。
相关文章推荐
- C#语言怎么实现从SQL SERVER导出数据到EXCEL
- C#语言怎么实现从SQL SERVER导出数据到EXCEL
- C# 实现Excel导出 加载模板 导入数据到模板
- C#实现数据导出Excel工作表
- C#实现将数据导出到word或者Excel中的方法
- C# 语言如何获取json格式的数据,不用javascript用c#实现。。。
- net架构下c#语言中easyui实现数据展示、增删改
- C# WinForm 实现增删改查等功能(Access版) 系列之八-导出数据到Excel
- 一个使用C#语言实现的数据比较案例
- C# Winform实现数据的导出为txt或者CSV或者excel格式
- [转]C#实现MS SQL数据导出到Excel
- c#实现将DataTable中的数据导出到DBF文件
- C#实现数据导出Excel工作表
- C#实现Excel模板导出和从Excel导入数据
- C#实现读写EXCEL数据—附实例导出DATAGRIDVIEW 数据到EXCEL
- C#实现几十万级数据导出Excel及Excel各种操作实例
- C# WinForm 实现增删改查等功能(Access版) 系列之八-导出数据到Excel
- 数据库数据导入导出系列之五 C#实现动态生成Word(转)
- C#实现EXCEL数据的导入导出
- #数据库数据导入导出系列之五 C#实现动态生成Word(转)