POI 导出Excel文档

    /**
     * 创建ExcelFile文件流
     * @param sheetNameArray 每个sheet页的名字
     * @param titles 每个sheet页的表头
     * @param cellValue 每行数据在map中的字段, 一定要和titles严格对应(如果list无数据, 则可以不传)
     * @param objects[] { List> } 每个sheet页的数据
     * @return 文件流
     */
    @SuppressWarnings({ "deprecation", "resource" })
    public void createExcelFileInputStream(String[] sheetNameArray, 
            String[][] titles, String[][] cellValue, Object[] objects,
            OutputStream os) {

        // 第一步,创建一个workbook,对应一个Excel文件
        XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFSheet xssfSheet = null;
        for( int index = 0; index < sheetNameArray.length; index++ ) 
        {
            String sheetName = sheetNameArray[index];
            // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
            xssfSheet = workbook.createSheet(sheetName);
            // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
            XSSFRow xssfRow = xssfSheet.createRow(0);
            // 第四步,设置表头样式和表头居中
            XSSFCellStyle xssfCellStyle = workbook.createCellStyle();
            //居中样式
            xssfCellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);
            xssfCellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);// 垂直
            xssfCellStyle.setFillForegroundColor(HSSFColor.CORNFLOWER_BLUE.index);// 设置背景色
            xssfCellStyle.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);
            XSSFFont font = workbook.createFont();
            font.setFontName("仿宋_GB2312");
            font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);// 粗体显示
            font.setFontHeightInPoints((short) 12); // 字体大小
            xssfCellStyle.setFont(font);

            // 第五步 创建单元格, 并将表头写入
            if(titles != null && titles.length != index)
            {
                int len = titles[index].length;
                XSSFCell hssfCell;
                for(int i = 0; i < len; i++)
                {
                    hssfCell = xssfRow.createCell(i);
                    hssfCell.setCellValue(titles[index][i]);//列名2
                    hssfCell.setCellStyle(xssfCellStyle);
                }
                // 第六步,写入实体数据
                if(objects != null && objects.length != index 
                        && objects[index] != null)
                {
                    List> list = (List>)objects[index];
                    if( (len = list.size()) > 0 )
                    {
                        for (int i = 0; i < len; i++) 
                        {
                            xssfRow = xssfSheet.createRow(i+1);
                            // 第七步,创建行、单元格,并设置值
                            Map map = new HashMap(list.get(i));
                            for(int j = 0; j < cellValue[index].length; j++){
                                xssfRow.createCell(j).setCellValue(MapUtils.getString(map, cellValue[index][j]));
                            }
                        }
                    }
                }
            }
        }
        // 第八步,将文件存到指定位置
        try {
            workbook.write(os);
            os.close();
        } catch (Exception e) {
            logger.error("createExcelFileInputStream is error, msg is : " + e.toString());
        }
    }

你可能感兴趣的:(java,POI,excel,poi)