JXL生成的excel文件+JAVA文件下载功能.docxVIP

  • 0
  • 0
  • 约2.54千字
  • 约 6页
  • 2023-05-14 发布于四川
  • 举报
JXL生成的excel文件+JAVA文件下载功能 一个需求,用户点击下载按钮,将指定的excel的报表模板使用数据库数据渲染, 然后下载到用户本地; 通常而言,对于一个文件的下载,可以有以下几种方式: window.location.卜乃作文件名称URL全路径; window.open(文件名称URL全路径); 这种方式不友好的地方在于服务器的目录结构直接暴露出去,而且在IE下很有 可能会报错权限问题等,甚至firefox中会触发那个年代久远而依然没有解决的 bugo所以这里不推荐。 对于jxl生成excel文件,有两种方式,一种是生成文件保存到磁盘,另一种是 直接保存到输出流中。 对于上述需求,如果生成的文件保存到磁盘,随着系统运行,磁盘会主键被占用, 需要手动去删除。由于文件都较小,所以这里采用第二种方式,直接在内存中生 成文件,然后提供给用户下载的时候response回去。 看一个例子: 用于响应下载请求的controller /** *下载个人订单 @param request @param response @param modelMap */ @RequestNlapping(value=,,/download. do11, method=RequestMethod.GET) public void processDownload (HttpServletRequest requestsHttpServletResponse response ,ModelMap modelNIap) { long userid = getllserld(request); String ids = request.getParameter(ids); try { Long[] idarray = getIdsFromStringArray(ids.split( “))); if (null == idarray || 0 == idarray.length) { return ; } //直接往response的输出流中写excel Outputstream outputstream = response? getOutputStream(); //获取文件名称 String fileName = getUserFileName(userid); //下载格式设置 response.setContentType(,,APPLICATION/OCTET-STREA|v|,,); response.setHeader(,Content-Disposition, attachment; filename=/ + fileName + //读取数据渲染模板并写入outputstream中 ListPhAdvertiseOrderDO advertiseOrderList = phAdvertiseOrderService.getAdvertiseOrderByIds(idarray? userid); outputstream = excelFileService.generalExcelFileInOutputStream(outputStream-, advertiseOrderList); outputstream.close(); } catch (Exception e) { logger.error(下载报表发生异常! ”,e); } } /pre 其中调用到的文件服务 /* (non-Javadoc) * @see ease.photography.service.ExcelFileService #generalExcelF ilelnOutputStream(java.lang.Stringy java.io.Outputstream, java.util.List) */ public Outputstream generalExcelFilelnOutputStream (Outputstream outputStream^ ListPhAdvertiseOrderDO advertiseOrderList) throws BiffException,工OException, WriteException { //检查参数是否合法 checkParam(tempalteFile?no File ,advertiseOrderList); //获取模板 Workbook templatebook = Workbook.getlAlorkbook(new File(tempalteFile)); WritableWorkbook writeableWorkbook = Workbook.createWorkbook(o

文档评论(0)

1亿VIP精品文档

相关文档