从服务器下载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() == "&nbsp;" ? "" : 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();
        }