使用poi3.8导出多sheet

/**
 * 导出excel
 * hhs
 * @param list 数据要求是map集合,而且放入map的需要为字符串
 * @param tableHeader 第一行的中文名
 * @param tableProperties 取值的属性名
 * @param request
 * @param response
 * @throws Exception
 */
    public static void createExcelSheet(List<Map<String,Object>> list,String[] tableHeader,
            String[] tableProperties,HttpServletRequest request,HttpServletResponse response)
            throws Exception {
        HSSFWorkbook workBook = new HSSFWorkbook();
        int page = (list.size()/65000)+1;
        for(int m=0;m<page;m++){
            HSSFSheet sheet = workBook.createSheet();
            workBook.setSheetName(m, "sheet"+String.valueOf(m));
            HSSFHeader header = sheet.getHeader();
            header.setCenter("sheet");
            HSSFRow headerRow = sheet.createRow(0);
            
            HSSFCellStyle headstyle = workBook.createCellStyle();
            HSSFFont headfont = workBook.createFont();
            headfont.setColor(HSSFColor.BLACK.index);
            headfont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
            headstyle.setFont(headfont);
            for (int i = 0; i < tableHeader.length; i++) {//标题行
                HSSFCell headerCell = headerRow.createCell(i);
                headerCell.setCellStyle(headstyle);
                // 设置cell的值
                headerCell.setCellValue(tableHeader[i]);
                headerCell.setCellStyle(headstyle);
            }
            
            int rowIndex = 1;
            for (int i = ((list.size()/page)*m); i < ((list.size()/page)*(m+1)); i++) {
                Map<String,Object> map = (Map<String,Object>) list.get(i);
                HSSFRow row = sheet.createRow(rowIndex);//创建一行数据
                for (int q = 0; q < tableProperties.length; q++) {//循环放入每格的数据
                    // 创建第i个单元格
                    HSSFCell cell = row.createCell(q);
                    cell.setCellValue((String)map.get(tableProperties[q]));
                    sheet.setColumnWidth(q, (1000 * 5));
                }
                rowIndex++;
            }
            FileOutputStream fos = new FileOutputStream(request.getSession().getServletContext().getRealPath("template.xls"));
            sheet.setGridsPrinted(true);
            HSSFFooter footer = sheet.getFooter();
            footer.setRight("Page " + HSSFFooter.page() + " of " + HSSFFooter.numPages());
            workBook.write(fos);
            fos.close();
        }
        //把生成的文件下载
        File file = new File(request.getSession().getServletContext().getRealPath("template.xls"));
        if(!file.exists()) throw new RuntimeException("文件不存在!");
        FileInputStream fileInputStream = new FileInputStream(file);
        BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
        OutputStream outputStream = response.getOutputStream();
        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream);
        //response.reset();
        response.setContentType("application/x-download");
        response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode("template.xls", "UTF-8"));
        int bytesRead = 0;
        byte[] buffer = new byte[8192];
        while ((bytesRead = bufferedInputStream.read(buffer, 0, 8192)) != -1) {
            bufferedOutputStream.write(buffer, 0, bytesRead);
        }
        bufferedOutputStream.flush();
        fileInputStream.close();
        bufferedInputStream.close();
        outputStream.close();
        bufferedOutputStream.close();
        if(file.exists()){
            file.delete();
        }
    }

你可能感兴趣的:(使用poi3.8导出多sheet)