聊聊DataTable下载
程序员文章站
2022-03-13 17:46:42
从服务器下载datatable到本地,有多种处理方式,下面介绍三种。 方式一,将datatable转为txt下载。 步骤: 1.将datatable内容下载到服务器txt中 2.将服务器的txt下载到本地来 3.删除服务器上的txt 方式二,datatable绑定到控件GridView后下载 步骤: ......
从服务器下载datatable到本地,有多种处理方式,下面介绍三种。
方式一,将datatable转为txt下载。
步骤:
1.将datatable内容下载到服务器txt中
2.将服务器的txt下载到本地来
3.删除服务器上的txt
方式二,datatable绑定到控件gridview后下载
步骤:
1.关闭控件分页功能并绑定数据到控件
2.下载控件内容到本地
3.打开控件分页功能并重新绑定数据
方式三,datatable转为excel下载
步骤:
1.将datatable内容下载到服务器excel中
2.将服务器中的excel下载到本地
3.删除服务器上的excel
如果大家有其他好的方式,不妨分享下,最好有源码,哈哈哈~~~~
//datatable转为txt public void datatabletotxt(string filepath,datatable ds) { filestream fs = new filestream(filepath, filemode.create); streamwriter sw = new streamwriter(fs); //开始写入 for (int j=0; j < ds.columns.count; j++) { sw.write(ds.columns[j].columnname); sw.write("\t"); } sw.write("\r\n"); for (int i = 0; i < ds.rows.count; i++) { for (int j = 0; j < ds.columns.count; j++) { sw.write(ds.rows[i][j].tostring() == " " ? "" : ds.rows[i][j].tostring()); sw.write("\t"); } sw.write("\r\n"); } //清空缓冲区 sw.flush(); //关闭流 sw.close(); fs.close(); }
//下载控件内容 public void gridviewtoexcel(control control, string filetype, string filename) { httpcontext.current.response.charset = "gb2312";//设置了类型为中文防止乱码的出现 httpcontext.current.response.contentencoding = system.text.encoding.getencoding("gb2312");//注意编码 httpcontext.current.response.appendheader("content-disposition", "attachment;filename=" + httputility.urlencode(filename, system.text.encoding.utf8).tostring());//将http头添加到输出流 httpcontext.current.response.contenttype = filetype;//image/jpeg;text/html;image/gif;vnd.ms-excel/msword control.page.enableviewstate = false;//服务器端只做出一次响应 stringwriter tw = new stringwriter();//实现将信息写入字符串(下面的信息会写到这里) htmltextwriter hw = new htmltextwriter(tw);//用于将标记字符和文本写入到asp.net服务器控件输出流 control.rendercontrol(hw);//将服务器控件的内容输出到所提供的 htmltextwriter 对象中 httpcontext.current.response.write("<html><head><meta http-equiv=content-type content=\"text/html; charset=gb2312\">"); httpcontext.current.response.write(tw.tostring()); httpcontext.current.response.write("</body></html>"); httpcontext.current.response.end(); } //调用 gridviewtoexcel(grd, "application/vnd.ms-excel.numberformat:@", "xx.xls");
//datatable 转excel public void datatabletoexcel(system.data.datatable tmpdatatable, string strfilename) { if (tmpdatatable == null) return; int rownum = tmpdatatable.rows.count; int columnnum = tmpdatatable.columns.count; int rowindex = 1; int columnindex = 0; microsoft.office.interop.excel.application xlapp = new microsoft.office.interop.excel.application(); xlapp.defaultfilepath = ""; xlapp.displayalerts = true; xlapp.sheetsinnewworkbook = 1; microsoft.office.interop.excel.workbook xlbook = xlapp.workbooks.add(true); microsoft.office.interop.excel.worksheet xlsheet = (microsoft.office.interop.excel.worksheet)xlbook.activesheet; //将datatable的列名导入excel表第一行 foreach (datacolumn dc in tmpdatatable.columns) { columnindex++; xlapp.cells[rowindex, columnindex] = dc.columnname; } //将datatable中的数据导入excel中 xlsheet.range[xlsheet.cells[1, 1], xlsheet.cells[rownum + 1, columnnum+1]].numberformatlocal = "@";//将格式设置成文本 for (int i = 0; i < rownum; i++) { rowindex++; columnindex = 0; for (int j = 0; j < columnnum; j++) { columnindex++; xlapp.cells[rowindex, columnindex] = tmpdatatable.rows[i][j].tostring(); } } //xlbook.savecopyas(httputility.urldecode(strfilename, system.text.encoding.utf8)); xlbook.savecopyas(strfilename); } datatabletoexcel(ds, server.mappath("") + "\\xx.xlsx");
//文件下载 参数 文件名 文件路径 public void downfiletolocal(string filename,string filepath) { fileinfo fileinfo = new fileinfo(filepath); httpcontext.current.response.clear(); httpcontext.current.response.clearcontent(); httpcontext.current.response.clearheaders(); httpcontext.current.response.addheader("content-disposition", "attachment;filename=" + filename); httpcontext.current.response.addheader("content-length", fileinfo.length.tostring()); httpcontext.current.response.addheader("content-transfer-encoding", "binary"); httpcontext.current.response.contenttype = "application/octet-stream"; httpcontext.current.response.contentencoding = system.text.encoding.getencoding("gb2312"); httpcontext.current.response.writefile(fileinfo.fullname); httpcontext.current.response.flush(); httpcontext.current.response.end(); }