博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Excel导出双sheet表格(poi)
阅读量:6336 次
发布时间:2019-06-22

本文共 2992 字,大约阅读时间需要 9 分钟。

@SuppressWarnings("unchecked")

    @Transactional(readOnly = true)
    public ByteArrayOutputStream approvalExport(Integer deptId, String signedTime, String signoutTime, Integer curPage,
            Integer perPageSum) throws Exception {
        // 日期
        Date start = null, end = null;
        if (StringUtils.isNotEmpty(signedTime)) {
            start = DateUtil.setDayMinTime(DateUtils.parseDate(signedTime, "yyyy-MM-dd"));
        }
        if (StringUtils.isNotEmpty(signoutTime)) {
            end = DateUtil.setDayMinTime(DateUtils.parseDate(signoutTime, "yyyy-MM-dd"));
        }
        // 分页
        Page page = new Page();
        page.setCurPage(curPage);
        page.setPerPageSum(perPageSum);
        RowBounds rowBounds = new RowBounds(page.getNextPage(), page.getPerPageSum());
        // 1、输出的文件地址及名称
        OutputStream outputStream = new FileOutputStream("请假_出差.xlsx");
        // 2、sheet表中的标题行内容,需要输入excel的汇总数据
        String[] businessTrip = { "部门名称", "姓名", "出差开始时间", "出差结束时间", "出差事由", "行程安排", "审批人", "审批结果", "创建时间" };
        List<List<String>> businessTripData = new ArrayList<List<String>>();
        Departments departments = new Departments();
        departments.setDeptId(deptId);
        List<Departments> depts = departmentDao.selectByDept(departments);
        List<ApprovalReportDto> _listBusinessTrip = attenceReportDao.selectbusinessTripByList(depts, start, end,
                rowBounds);
        for (ApprovalReportDto businessTripARDto : _listBusinessTrip) {
            List<String> rowData = new ArrayList<String>();
            rowData.add(businessTripARDto.getDepartmentName());
            rowData.add(businessTripARDto.getUserName());
            rowData.add(businessTripARDto.getStartTime());
            rowData.add(businessTripARDto.getEndTime());
            rowData.add(businessTripARDto.getContent());
            rowData.add(businessTripARDto.getSchedules());
            rowData.add(businessTripARDto.getUpdateBy());
            rowData.add(businessTripARDto.getState());
            rowData.add(businessTripARDto.getCreateTime());
            businessTripData.add(rowData);
        }
        // 请假
        String[] leave = { "部门名称", "姓名", "请假开始时间", "请假结束时间", "请假类型", "请假原因", "审批人", "审批结果", "创建时间" };
        List<List<String>> leaveData = new ArrayList<List<String>>();
        List<ApprovalReportDto> _listLeave = attenceReportDao.selectLeaveByList(depts, start, end, rowBounds);
        for (ApprovalReportDto leaveARDto : _listLeave) {
            List<String> rowData = new ArrayList<String>();
            rowData.add(leaveARDto.getDepartmentName());
            rowData.add(leaveARDto.getUserName());
            rowData.add(leaveARDto.getStartTime());
            rowData.add(leaveARDto.getEndTime());
            rowData.add(leaveARDto.getLeaveType());
            rowData.add(leaveARDto.getContent());
            rowData.add(leaveARDto.getUpdateBy());
            rowData.add(leaveARDto.getState());
            rowData.add(leaveARDto.getCreateTime());
            leaveData.add(rowData);
        }
        // 3、写入
        ExcelUtil excelUtil = new ExcelUtil<Map<String, Object>>();
        ByteArrayOutputStream xlsOutput = new ByteArrayOutputStream();
        XSSFWorkbook workbook = new XSSFWorkbook();
        // 第一个表格内容
        excelUtil.exportExcel(workbook, 0, "出差", businessTrip, businessTripData, outputStream);
        // 第二个表格内容
        excelUtil.exportExcel(workbook, 1, "请假", leave, leaveData, outputStream);
        // 写出
        workbook.write(xlsOutput);
        return xlsOutput;
    }

转载于:https://www.cnblogs.com/lsz1349yw/p/poi20170515_02.html

你可能感兴趣的文章
深入了解setInterval方法
查看>>
html img Src base64 图片显示
查看>>
[Spring学习笔记 7 ] Spring中的数据库支持 RowMapper,JdbcDaoSupport 和 事务处理Transaction...
查看>>
FFMPEG中关于ts流的时长估计的实现(转)
查看>>
Java第三次作业
查看>>
【HDOJ 3652】B-number
查看>>
android代码混淆笔记
查看>>
Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) C. String Reconstruction 并查集
查看>>
BMP文件的读取与显示
查看>>
Flash文字效果
查看>>
各种排序算法总结篇(高速/堆/希尔/归并)
查看>>
使用c#訪问Access数据库时,提示找不到可安装的 ISAM
查看>>
Highcharts X轴纵向显示
查看>>
windows 注册表讲解
查看>>
【算法】论平衡二叉树(AVL)的正确种植方法
查看>>
基于DDD的现代ASP.NET开发框架--ABP系列之1、ABP总体介绍
查看>>
react 从零开始搭建开发环境
查看>>
scala recursive value x$5 needs type
查看>>
ps -ef |grep 输出的具体含义
查看>>
markdown编辑
查看>>