您的位置:首页 > 其它

从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
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: