从gridview 中查询数据导出Excel 简单方法
2012-03-14 17:55
465 查看
这一直是我想写得,嘿嘿,今天没有什么事情干想起这个了,很普通的方法,听说用NPOI导出效果会更好,我以后再学吧!也希望谁能给我推荐推荐昂。。。。。。。。。。
//链接字符串
string strConn = "Data Source=.;DataBase=hhaspx_gz;Uid=sa;Pwd="; //链接SQL数据库
//导出Excel
protected void Button2_Click(object sender, EventArgs e)
{
//查询数据
SqlConnection cn = new SqlConnection(strConn);
cn.Open();
SqlDataAdapter sda = new SqlDataAdapter("select * from hhaspx", cn);
DataSet ds = new DataSet();
sda.Fill(ds, "hhaspx");
string filename = DateTime.Now.Ticks + ".xls";
CreateExcel(ds, ExcelHeader(), filename);
}
/// <summary>
/// 设置要导出的字段 就是数据库中的字段
/// </summary>
/// <returns></returns>
public Dictionary<string, string> ExcelHeader()
{
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("hhaspx_rq", "项目编号");
dic.Add("hhaspx_bh", "项目名称");
dic.Add("hhaspx_xm", "估价目的");
dic.Add("hhaspx_dx", "估价方法");
dic.Add("hhaspx_kh", "作业开始日期");
dic.Add("hhaspx_jl", "作业结束日期");
dic.Add("hhaspx_jt", "估价作业期");
dic.Add("hhaspx_jb", "土地面积");
dic.Add("hhaspx_zb", "建筑面积");
dic.Add("hhaspx_jx", "评估总价");
dic.Add("hhaspx_hj", "估价对象位置(坐落)");
return dic;
}
#region 一般性导出excel
/// <summary>
/// 导出excel
/// </summary>
/// <param name="ds">数据源</param>
/// <param name="dic">要显示的字段</param>
/// <param name="FileName">默认保存的文件名</param>
public static void CreateExcel(DataSet ds, Dictionary<string, string> dic, string FileName)
{
HttpResponse resp;
resp = System.Web.HttpContext.Current.Response;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
//定义标题行和列
string colHeaders = "", ls_item = "";
DataTable dt = ds.Tables[0];
DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的
int cl = dt.Columns.Count;
// 取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
foreach (KeyValuePair<string, string> kv in dic)
{
colHeaders += kv.Value + "\t";//\t是跳格的意思。类似Tab键的功能。
}
colHeaders += "\n";//标题行输出完成后换行
resp.Write(colHeaders);
foreach (DataRow onerow in myRow)
{
foreach (KeyValuePair<string, string> col in dic)
{
ls_item += onerow[col.Key] + "\t";
}
ls_item += "\n";
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
resp.Write(ls_item);
ls_item = "";
}
resp.End();
}
#endregion
}
//链接字符串
string strConn = "Data Source=.;DataBase=hhaspx_gz;Uid=sa;Pwd="; //链接SQL数据库
//导出Excel
protected void Button2_Click(object sender, EventArgs e)
{
//查询数据
SqlConnection cn = new SqlConnection(strConn);
cn.Open();
SqlDataAdapter sda = new SqlDataAdapter("select * from hhaspx", cn);
DataSet ds = new DataSet();
sda.Fill(ds, "hhaspx");
string filename = DateTime.Now.Ticks + ".xls";
CreateExcel(ds, ExcelHeader(), filename);
}
/// <summary>
/// 设置要导出的字段 就是数据库中的字段
/// </summary>
/// <returns></returns>
public Dictionary<string, string> ExcelHeader()
{
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("hhaspx_rq", "项目编号");
dic.Add("hhaspx_bh", "项目名称");
dic.Add("hhaspx_xm", "估价目的");
dic.Add("hhaspx_dx", "估价方法");
dic.Add("hhaspx_kh", "作业开始日期");
dic.Add("hhaspx_jl", "作业结束日期");
dic.Add("hhaspx_jt", "估价作业期");
dic.Add("hhaspx_jb", "土地面积");
dic.Add("hhaspx_zb", "建筑面积");
dic.Add("hhaspx_jx", "评估总价");
dic.Add("hhaspx_hj", "估价对象位置(坐落)");
return dic;
}
#region 一般性导出excel
/// <summary>
/// 导出excel
/// </summary>
/// <param name="ds">数据源</param>
/// <param name="dic">要显示的字段</param>
/// <param name="FileName">默认保存的文件名</param>
public static void CreateExcel(DataSet ds, Dictionary<string, string> dic, string FileName)
{
HttpResponse resp;
resp = System.Web.HttpContext.Current.Response;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
//定义标题行和列
string colHeaders = "", ls_item = "";
DataTable dt = ds.Tables[0];
DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的
int cl = dt.Columns.Count;
// 取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
foreach (KeyValuePair<string, string> kv in dic)
{
colHeaders += kv.Value + "\t";//\t是跳格的意思。类似Tab键的功能。
}
colHeaders += "\n";//标题行输出完成后换行
resp.Write(colHeaders);
foreach (DataRow onerow in myRow)
{
foreach (KeyValuePair<string, string> col in dic)
{
ls_item += onerow[col.Key] + "\t";
}
ls_item += "\n";
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
resp.Write(ls_item);
ls_item = "";
}
resp.End();
}
#endregion
}
相关文章推荐
- 将repeater、datalist、gridview中的数据导出到Excel中的简单方法
- 将repeater、datalist、gridview中的数据导出到Excel中的简单方法
- VB6数据导出到Excel文件,一种设计界面查询条件的方法,一种简单加密方法(改写)
- GridView中的数据导出到Excel方法(包含处理模板列)
- python脚本实现数据导出excel格式的简单方法(推荐)
- php把数据表导出为Excel表的最简单、最快的方法(不用插件)
- GridView中的数据导出到Excel方法(包含处理模板列)
- GridView中的数据导出到Excel方法(经测试完整)
- winform中 将listview的数据导出至 excel (最简单的方法)
- Gridview数据导出excel时身份证号码为科学计数法的解决方法
- Gridview数据导出excel时身份证号码为科学计数法的解决方法
- Struts2简单导出数据到excel中方法(实例)
- GridView中的数据导出到Excel方法(包含处理模板列)
- datagridview中显示的数据导出到Excel——用最简单的方法解决科学计数法的问题
- php把数据表导出为Excel表的最简单、最快的方法(不用插件)
- GridView简单实现导出数据到Excel
- 比较简单的导入导出EXCEL数据的方法
- 如何导入excel数据到SQL server数据库 & 如何导出GridView数据至Excel
- aix英文版导出excel单元格内容显示不全简单解决方法
- GridView导出Excel方法