JXL生成的excel文件+JAVA文件下载功能_第1页
JXL生成的excel文件+JAVA文件下载功能_第2页
JXL生成的excel文件+JAVA文件下载功能_第3页
JXL生成的excel文件+JAVA文件下载功能_第4页
JXL生成的excel文件+JAVA文件下载功能_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JXL生成的excel文件+JAVA文件下载功能一个需求,用户点击下载按钮,将指定的excel的报表模板使用数据库数据渲染,然后下载到用户本地;通常而言,对于一个文件的下载,可以有以下几种方式:window.location.卜乃作文件名称URL全路径;window.open(文件名称URL全路径);这种方式不友好的地方在于服务器的目录结构直接暴露出去,而且在IE下很有可能会报错权限问题等,甚至firefox中会触发那个年代久远而依然没有解决的bugo所以这里不推荐。对于jxl生成excel文件,有两种方式,一种是生成文件保存到磁盘,另一种是直接保存到输出流中。对于上述需求,如果生成的文件保存到磁盘,随着系统运行,磁盘会主键被占用,需要手动去删除。由于文件都较小,所以这里采用第二种方式,直接在内存中生成文件,然后提供给用户下载的时候response回去。看一个例子:用于响应下载请求的controller/***下载个人订单@paramrequest@paramresponse@parammodelMap*/@RequestNlapping(value=,,/download.do11,method=RequestMethod.GET)publicvoidprocessDownload(HttpServletRequestrequestsHttpServletResponseresponse,ModelMapmodelNIap){longuserid=getllserld(request);Stringids=request.getParameter("ids");try{Long[]idarray=getIdsFromStringArray(ids.split(“)"));if(null==idarray||0==idarray.length){return;}//直接往response的输出流中写excelOutputstreamoutputstream=response・getOutputStream();//获取文件名称StringfileName=getUserFileName(userid);//下载格式设置response.setContentType(,,APPLICATION/OCTET-STREA|v|,,);response.setHeader(,Content-Disposition","attachment;filename=/""+fileName+"//读取数据渲染模板并写入outputstream中List<PhAdvertiseOrderDO>advertiseOrderList=phAdvertiseOrderService.getAdvertiseOrderByIds(idarray?userid);outputstream=excelFileService.generalExcelFileInOutputStream(outputStream-,advertiseOrderList);outputstream.close();}catch(Exceptione){logger.error("下载报表发生异常!”,e);}}</pre>其中调用到的文件服务/*(non-Javadoc)*@seeease.photography.service.ExcelFileService#generalExcelFilelnOutputStream(java.lang.Stringyjava.io.Outputstream,java.util.List)*/publicOutputstreamgeneralExcelFilelnOutputStream(OutputstreamoutputStream^List<PhAdvertiseOrderDO>advertiseOrderList)throwsBiffException,工OException,WriteException{//检查参数是否合法checkParam(tempalteFile?"noFile",advertiseOrderList);//获取模板Workbooktemplatebook=Workbook.getlAlorkbook(newFile(tempalteFile));WritableWorkbookwriteableWorkbook=Workbook.createWorkbook(outputStream.,templatebook);//读取数据写入模板readDataAndWriteTemplate(templatebook^writeableWorkbook^advertiseOrderList);returnoutputstream;}</pre>其中的重点就在于WritableWorkbookwriteableWorkbook=Workbook.createWorkbook(outputStream.,templatebook);这句话指定了写入的数据到输出流中。页面调用很简单functiongetOrderFileNoDirect(){varids="for(vari=0;i<30;i++){if($(,,choose,,+i)!=null&&$("choose"+i).check

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论