在Aspx中导Excel
发布时间:2023-08-02 15:09:10 所属栏目:教程 来源:
导读:关于aspx中导excel,网上的方法比较的多,而最主要的是用com的控件,小弟以前也是用有如此之方法,不过嘛,这种方法有一些小小的缺点,比如:必须要进行某种复杂的注册,而且在效率上可能也会比较的慢一些,所以,小
关于aspx中导excel,网上的方法比较的多,而最主要的是用com的控件,小弟以前也是用有如此之方法,不过嘛,这种方法有一些小小的缺点,比如:必须要进行某种复杂的注册,而且在效率上可能也会比较的慢一些,所以,小弟用了一种变通的方法,效果还不错,不敢独留,所以与大家共同分享之。 我们知道,在做web的程序中有一个非常大的好处就是只要在服务器上进行配置,就可以不用考虑到客户端的东东了,本程序的主要思想是,在服务器端进行相关的操作生成excel文件,然后再由客户端进行下载。 由于直接生成excel文件比较的慢,所以,我先生成的是txt文本,然后保存为excel文件。话不多说,先show一下我的代码。 using system; using system.data; using system.io; using system.web; namespace toexceldsns { public class toexcelds { private string _txtpath;//txt文本的路径 private string _xlspath;//excel的路径 private dataset _ds; public toexcelds(string xlspath,string txtpath,dataset ds)//构造函数 传入参数为excel与文本路径及转化的dataset { _txtpath=txtpath; _xlspath=xlspath; _ds=ds; } public void pumptoexcel()//导excel { datarow[] dr=_ds.tables[0].select("1=1"); datatable dt=_ds.tables[0]; streamwriter sw=new streamwriter(_txtpath,false,system.text.encoding.default);//文本流 string tmp=""; foreach(datacolumn dc in dt.columns) { tmp+=dc.caption+"/t"; } sw.writeline(tmp+"/a");//将dataset中的头名写进文本流中,用制表符隔开 int itemcount=dt.rows.count; int columncount=dt.columns.count; for(int j=2;j<2+itemcount;j++)//将dataset中的每行写进文本流中,用制表符隔开 { tmp=""; for(int k=1;k<columncount+1;k++) { tmp+=dr[j-2][k-1].tostring()+"/t"; } sw.writeline(tmp+"/a"); } sw.flush(); file.copy(_txtpath,_xlspath,true);//将txt保存为excel sw.close(); } } } 一个简单而方便的导excel就完成了,当然,有人会提到,如果一起导excel会不会有问题,经本人测试,没有任何问题发生,原因是,在导excel中已经有了一个本地的副本,所以不存在冲突的问题,希望大家能够从中得到启发,从而定制出更科学的方法,当然,不要忘记分享哦! (编辑:聊城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐