请问,ASP.NET 在生成完EXCEL对象后,如何让用户直接让用户下载,不保存文件至服务器,我现在已经编辑好了我的Excel.Workbook对象,excel.Visible = true;后,看文件也达到了我预想的效果,可是,公司要求文件不是直接打开的,而是要按下“下载”按钮,让用户下载,我现在就想,是不是先把Workbook对象里的内容变成byte[]然后页面直接Response.Write(byte[])?
可是我Workbook转byte[]的时候一直找不到什么好办法,经常报错,求各位高指点,最好有代码~ 在线等,非常急!谢谢

解决方案 »

  1.   

    saveAs,先存了.再转..转完后Response到客户端,再把存了的文件删掉.试一下吧.
      

  2.   

    如果很多用户都要下载文件,那不是会生成很多临时文件? 然后什么时候再销毁呢? 好麻烦哦,不能把Excel.Workbook对象里的内容变成Byte[]吗?然后Response.Write ?
      

  3.   

    先把EXCEl里面的内容读出来保存到一个对象里面
    下载的时候 就去读取这个对象里面的内容啊
      

  4.   

    如果一个sheet的话,就可以生成tab分隔的txt文件,就是excel,直接在内存中输出,如果多sheet的话,你就只能操作excel文件了,麻烦的是不知道用户什么时候下载好,或者按了取消
      

  5.   

    还有一种思路,获取服务器端数据,客户端生成excel文件
      

  6.   

    我所生成的文件是某一种打印单据,是有1个画面让用户输入内容,按按钮后后台会去从XML,SQL等地方拿指定数据,然后还要自己画一下边框,设置下单元格的长宽等,这些都不是固定的本以为可以直接RESOPNSE.WRITE输出流就可以了,谁知道Excel.Workbook对象不可以转流,网上也查了下资料,不知道怎么转了哦。刚才和群里的朋友交流了下,有的人叫我生成临时文件,然后再做个线程,固定时间去扫,判断每一个临时文件的创建或修改日期是不是大于2分钟? 如果是,就删除,不是就不删除,我觉得这办法不太好。还有一种是说,让我把EXCEL对象放到DATESET里去,然后把DATESET转成流,然后直接页面输出流文件。我觉得第2个方法还可以,没生成临时文件,现在也在尝试,请高手们给点意见,最好给点代码,谢谢