Java实现Excel导出

所有的导出导入,都是输入输出流,一个读一个写.本文介绍一种导出Excel的方法,凡是你查询出来的数据都可以按自定义顺序导出:
控制层(controlle)代码如下:

@RequestMapping(params = "excelTemplate")
    @ResponseBody
    public AjaxJson excelTemplate(HttpServletRequest request, HttpServletResponse response) {
        AjaxJson j = new AjaxJson();
        String beginTime = request.getParameter("beginTime");
        String endTime = request.getParameter("endTime");
        String num = request.getParameter("num");
        //前面三个参数是jsp传过来的,分别是开始时间,结束时间,和最新多少条数据
        try {
            String s = request.getSession().getServletContext().getRealPath("/");
            String path = s + "export/template/finance.xls"; // 这个是我的excel模板
            InputStream in = new FileInputStream(new File(path));
            SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd"); // 为了转时间,看你需不需要按时间查询的结果导出
            HSSFWorkbook work = new HSSFWorkbook(in);
            // 得到excel的第0张表
            HSSFSheet sheet = work.getSheetAt(0);
            HSSFRow row = sheet.getRow(0);
            HSSFCell cell = row.getCell(2);
            int i = 2;// 计数器
            List<Map<String, Object>> list = this.memberFinanceService.selectInfo(beginTime, endTime, num);
            // 创建每个单元格,添加样式,最后合并
            work.getSheetAt(0).shiftRows(3, 3, list.size() - 1); // 把第三行移动到列表的长度-1的地方
            // 这个地方我是要把模板的第四行放到最后一行

            for (Map map : list) {
                row = sheet.createRow(i);
                cell = row.createCell(0);// 得到第0个单元格
                if (!(map.get("companyName") == null)) {
                    cell.setCellValue(map.get("companyName").toString());
                } else {
                    cell.setCellValue("");
                }
                cell = row.createCell(1);
                if (!(map.get("memberName") == null)) {
                    cell.setCellValue(map.get("memberName").toString());
                } else {
                    cell.setCellValue("");
                }
                cell = row.createCell(2);
                if (!(map.get("integral") == null)) {
                    cell.setCellValue(map.get("integral").toString());
                } else {
                    cell.setCellValue("");
                }
                cell = row.createCell(3);
                if (!(map.get("equity_coupon") == null)) {
                    cell.setCellValue(map.get("equity_coupon").toString());
                } else {
                    cell.setCellValue("");
                }
                cell = row.createCell(4);
                if (!(map.get("equity_income") == null)) {
                    cell.setCellValue(map.get("equity_income").toString());
                } else {
                    cell.setCellValue("");
                }
                cell = row.createCell(5);
                if (!(map.get("directRewards") == null)) {
                    cell.setCellValue(map.get("directRewards").toString());
                } else {
                    cell.setCellValue("");
                }
                cell = row.createCell(6);
                if (!(map.get("indirectRewards") == null)) {
                    cell.setCellValue(map.get("indirectRewards").toString());
                } else {
                    cell.setCellValue("");
                }
                cell = row.createCell(7);
                if (!(map.get("balance") == null)) {
                    cell.setCellValue(map.get("balance").toString());
                } else {
                    cell.setCellValue("");
                }
                cell = row.createCell(8);
                if (!(map.get("extractable") == null)) {
                    cell.setCellValue(map.get("extractable").toString());
                } else {
                    cell.setCellValue("");
                }
                i++;
            }
            HSSFRow row1 = sheet.getRow(list.size() + 2);
            System.out.println(row1);
            HSSFCell cell1 = row1.getCell(0);
            String address = simpleFormat.format(new Date());
            OutputStream os = response.getOutputStream();// 取得输出流
            response.setContentType("application/vnd.ms-excel");
            response.setHeader("Content-disposition", "attachment;filename=finance(" + address + ").xls");
            work.write(os);
            os.close();
        } catch (FileNotFoundException e) {
            System.out.println("文件路径错误");
            e.printStackTrace();
        } catch (IOException e) {
            System.out.println("文件输入流错误");
            e.printStackTrace();
        }
        request.setAttribute("num", num);
        j.setMsg("导出Excel成功");
        return j;
    }

这种导出方法比较灵活和简单, 你只需要查出自己想导出的数据就可以导出了!(不清楚的可以留言问我)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值