欢迎光临
我们一直在努力

datagrid数据导出到excel文件给客户端下载的几种方法-.NET教程,报表/图形/Office

建站超值云服务器,限时71元/月

方法一:导出到csv文件,存放在服务器端任一路径,然后给客户下载

优点:
1、可以进行身份认证后给客户下载,如果放到非web目录就没有对应的url,客户无法随时下载。
2、也是因为生成了文件,所以占用了服务器的空间,但是可以把文件名存放到数据库,再次给客户下载的时候不需要重复生成文件。
3、csv文件是文本文件,逗号隔开字段,回车隔开行,易于数据导入导出。

实现方法:
   sqlconnection conn=new sqlconnection(system.configuration.configurationsettings.appsettings[“conn”]);
   sqldataadapter da=new sqldataadapter(“select * from tb1”,conn);
   dataset ds=new dataset();
   da.fill(ds,”table1″);
   datatable dt=ds.tables[“table1”];
   string name=system.configuration.configurationsettings.appsettings[“downloadurl”].tostring()+datetime.today.tostring(“yyyymmdd”)+new random(datetime.now.millisecond).next(10000).tostring()+”.csv”;//存放到web.config中downloadurl指定的路径,文件格式为当前日期+4位随机数
   filestream fs=new filestream(name,filemode.create,fileaccess.write);
   streamwriter sw=new streamwriter(fs,system.text.encoding.getencoding(“gb2312”));
   sw.writeline(“自动编号,姓名,年龄”);
   foreach(datarow dr in dt.rows)
   {
    sw.writeline(dr[“id”]+”,”+dr[“vname”]+”,”+dr[“iage”]);
   }
   sw.close();
   response.addheader(“content-disposition”, “attachment; filename=” + server.urlencode(name));
   response.contenttype = “application/ms-excel”;// 指定返回的是一个不能被客户端读取的流,必须被下载
   response.writefile(name); // 把文件流发送到客户端
   response.end();

方法二:导出到csv文件,不存放到服务器,直接给浏览器输出文件流

优点:
1、随时生成,不需要占用资源
2、可以结合身份认证
3、同样利于数据交换

实现方法:
sqlconnection conn=new sqlconnection(system.configuration.configurationsettings.appsettings[“conn”]);
   sqldataadapter da=new sqldataadapter(“select * from tb1”,conn);
   dataset ds=new dataset();
   da.fill(ds,”table1″);
   datatable dt=ds.tables[“table1”];
   stringwriter sw=new stringwriter();
   sw.writeline(“自动编号,姓名,年龄”);
   foreach(datarow dr in dt.rows)
   {
    sw.writeline(dr[“id”]+”,”+dr[“vname”]+”,”+dr[“iage”]);
   }
   sw.close();
   response.addheader(“content-disposition”, “attachment; filename=test.csv”);
   response.contenttype = “application/ms-excel”;
   response.contentencoding=system.text.encoding.getencoding(“gb2312”);
   response.write(sw);
   response.end();

方法三:从datagrid导出html代码,生成excel文件,给客户端下载

优点:
1、有固定的格式,样子好看(datagrid的样子)

局限性:
1、不适合数据交换,里面有html代码,比较乱,没有固定格式
2、datagrid不能有分页、排序等,否则出错

实现方法:
response.clear();
   response.buffer= false;
   response.charset=”gb2312″;
   response.appendheader(“content-disposition”,”attachment;filename=test.xls”);
   response.contentencoding=system.text.encoding.getencoding(“gb2312”);    response.contenttype = “application/ms-excel”;    this.enableviewstate = false;
   system.io.stringwriter ostringwriter = new system.io.stringwriter();
   system.web.ui.htmltextwriter ohtmltextwriter = new system.web.ui.htmltextwriter(ostringwriter);
   this.datagrid1.rendercontrol(ohtmltextwriter);
   response.write(ostringwriter.tostring());
   response.end();

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » datagrid数据导出到excel文件给客户端下载的几种方法-.NET教程,报表/图形/Office
分享到: 更多 (0)