在程序开发中常常会遇到大量数据的操做问题,有的时候仍是少不了Excel,GSV等,须要进行数据文件类型的备份。html
固然能够在数据端能够操做。右点击数据库->任务->导出数据->数据源选择应该导出的格式。下一步就能够编写SQL语句得到本身想要 的数据啦,可是这个须要操做数据库,而真正的系统开发中,可以直接操做数据库的人不多。因此这种方法只能做为管理作临时查询时使用。数据库
在开发过程当中,特别是进行查询统计的时候,须要将一些数据报表,导出到Excel或者其它的存储格式,用于打印、文档分析、提交报告等。这就要求咱们在程序开发的时候进行处理,提供接口供用户导出数据。下面就简单介绍几种将数据导出到Excel的方法。服务器
<1>将数据导出,存储在服务器,而后提供连接用于用户下载,其特色:app
结果能够持久保存,用户能够下载历史版本ide
占用服务器空间post
依赖控件属性this
具体的逻辑代码以下:url
protected void Button2_Click(object sender, EventArgs e) { DataTable thisTable = AddTimeBusiness.getInstance().GetTable(); StringWriter stringWriter = new StringWriter(); HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter); DataGrid excel = new DataGrid(); excel.DataSource = thisTable.DefaultView; //绑定到DataGrid excel.DataBind(); excel.RenderControl(htmlWriter); //这里指定文件的路径 string filestr = "d:\\data\\" + "11.xls"; int pos = filestr.LastIndexOf("\\"); string file = filestr.Substring(0, pos); if (!Directory.Exists(file)) { Directory.CreateDirectory(file); } System.IO.StreamWriter sw = new StreamWriter(filestr); sw.Write(stringWriter.ToString()); sw.Close(); }
<2>当用户导出时,直接将数据导出客户端,几种方法,感受此类方法比较适用。spa
其特色:随时生成,在服务器没有保存副本,方便、快捷。excel
具体的逻辑代码以下面小例子:
//根据须要获得数据表
DataTable thisTable = getTable(condition.ToString());
if (thisTable != null)
{
StringWriter sw = new StringWriter();
sw.WriteLine("编号\t账号\t姓名\t电话\t地址\t金额\t开通时间");
foreach (DataRow dr in thisTable.Rows)
{
sw.WriteLine(dr["F_ID"] + "\t" + dr["F_Psnid"] + "\t" + dr["F_Name"] + "\t" + dr["F_Tel"] + "\t" + dr["F_Address"] + "\t" + dr["F_TradeMoney"] + "\t" + dr["F_TradeTime"]);
}
sw.Close();
Response.AddHeader("Content-Disposition", "p_w_upload; filename=YinHeUserInfo.xls");
Response.ContentType = "application/ms-excel";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.Write(sw);
Response.End();
}
补充:若是须要导出为GSV文件,只须要上例分隔符“\t”用“,”替换就能够了。
<3>便可下载到客户端,又可以在服务器保存副本。能够说,此方法知足了以上的两种方法的功能。
若是你只想将结果保存在服务器端,则此种方法比第一种方法更加合理,不用过度的依赖控件的属性。其实这就是一种文件流的操做。因此第一种方法不可取。
string filePath = "d:\\data.xls";//这个你能够本身修改成虚拟路径 FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write); StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.GetEncoding("gb2312")); sw.WriteLine("编号\t账号\t姓名\t电话\t地址\t金额\t开通时间"); foreach (DataRow dr in thisTable.Rows) { sw.WriteLine(dr["F_ID"] + "\t" + dr["F_Psnid"] + "\t" + dr["F_Name"] + "\t" + dr["F_Tel"] + "\t" + dr["F_Address"] + "\t" + dr["F_TradeMoney"] + "\t" + dr["F_TradeTime"]); } sw.Close(); fs.Close(); #region==若是要下载到客户端,则添加下列代码== //Response.AddHeader("Content-Disposition", "p_w_upload; filename=" + Server.UrlEncode(filePath)); //Response.ContentType = "application/ms-excel";// 指定返回的是一个不能被客户端读取的流,必须被下载 //Response.WriteFile(filePath); // 把文件流发送到客户端 //Response.End();