读书人

利用jxl将数据导出到excel时弹出保留对

发布时间: 2012-12-27 10:17:10 作者: rapoo

利用jxl将数据导出到excel时弹出保存对话框的例子

public String outPutExcel(ModelMap model, HttpServletRequest request,                              HttpServletResponse response) {        //获取时间区域        String timeArea = request.getParameter("timeArea");        String keyword = request.getParameter("keyword");        String select = request.getParameter("select");        //获取操作类型        String operate = request.getParameter("operate");        //        File file = new File("daily.xls");        try {            OutputStream os = response.getOutputStream();// 取得输出流               response.reset();// 清空输出流               response.setHeader("Content-disposition", "attachment; filename="                                                      + new String("daily".getBytes("GB2312"),                                                          "iso8859_1") + ".xls");// 设定输出文件头               response.setContentType("application/msexcel");// 定义输出类型             WritableWorkbook workbook = Workbook.createWorkbook(os);            if (workbook != null) {                WritableSheet sheet = workbook.createSheet("sheet1", 0);                // 设置标题 sheet.addCell(new jxl.write.Label(列(从0开始), 行(从0开始), 内容.));                 try {                    sheet.addCell(new Label(0, 0, "区域名"));                    sheet.addCell(new Label(1, 0, "所在位置"));                    sheet.addCell(new Label(2, 0, "操作人员"));                    sheet.addCell(new Label(3, 0, "时间"));                    sheet.addCell(new Label(4, 0, "操作类型"));                    sheet.addCell(new Label(5, 0, "备注"));                    // 设置单元格的宽度                     sheet.setColumnView(0, 20);                    sheet.setColumnView(1, 40);                    sheet.setColumnView(2, 15);                    sheet.setColumnView(3, 30);                    sheet.setColumnView(4, 15);                    sheet.setColumnView(5, 20);                    //添加数据                    List<SysActionLog> list = this.getSysActionLogs(timeArea, keyword, select,                        operate);                    SysActionLog log = null;                    for (int r = 0; r < list.size(); r++) { //行编号                        log = list.get(r);                        //区域名                        sheet.addCell(new Label(0, r + 1, log.getFilealia()));                        //所在位置                        sheet.addCell(new Label(1, r + 1, log.getFilename()));                        //操作人员                        sheet.addCell(new Label(2, r + 1, log.getAuthor()));                        //时间                        sheet.addCell(new Label(3, r + 1, log.getFormatDate()));                        //操作类型                        sheet.addCell(new Label(4, r + 1, log.getSysAction().getMessage()));                        //备注                        sheet.addCell(new Label(5, r + 1, log.getComment()));                    }                    //从内存中写入文件中                       workbook.write();                    //关闭资源,释放内存                        workbook.close();                    /*response.reset();                    FileInputStream f = new FileInputStream(file);                    byte[] fb = new byte[f.available()];                    f.read(fb);                    response                        .setHeader("Content-disposition", "attachment; filename="                                                          + new String("daily.xls"                                                              .getBytes("gb2312"), "iso8859-1"));                    ByteArrayInputStream bais = new ByteArrayInputStream(fb);                    int b;                    while ((b = bais.read()) != -1) {                        response.getOutputStream().write(b);                    }                    response.getOutputStream().flush();                                        //删除服务器上的文件                    file.deleteOnExit();*/                } catch (RowsExceededException e) {                    logger.error("sheet不存在", e);                } catch (WriteException e) {                    logger.error("创建列名出错", e);                }            }        } catch (IOException e) {            logger.error("文件创建出错", e);        }        return "daily.vm";    }

?

读书人网 >编程

热点推荐