`

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

    博客分类:
  • java
阅读更多
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";
    }

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics