JAVAWeb使用POI做导出Excel

一.需要了解的API

  ①HSSFWorkBook  //代表一个Excel文件

  ②HSSFSheet  //代表一个表

  ③HSSFRow  //代表一个表中的某一行

  ④HSSFCell  //代表一个表中的某一行的某一个单元格

  ⑤HSSFCellStyle  //单元格的样式

  ⑥HSSFFont  //字体样式

二.导出过程代码思想

  ①首先创建一个载体(Excel),HSSFWorkBook wb = new HSSFWorkBook();

  ②在Excel创建一个sheet,HSSFSheet sheet = wb.createSheet("sheet name");

  ③在sheet中创建第一行,HSSFRow row = sheet.createRow(0);  注意下标从0开始

  ④在第一行中创建第一个单元格,HSSFCell cell = row.createCell(0); 注意下标是从0开始

  ⑤创建一个HSSFCellStyle style = wb.createStyle();

  ⑥创建一个HSSFFont font = wb.createFont();

  ⑦cell.setCellStyle(style); 单元格添加样式

  ⑧style.setFont(font);  样式中保存字体

三.代码具体实现

public static HSSFWorkbook generateItemExcel(List<PmItemMaintainMVO> ps){
        // 创建一个Excel文件
        HSSFWorkbook wb = new HSSFWorkbook();
        
        // 根据Excel创建一个sheet
        HSSFSheet sheet = wb.createSheet("立项信息");
        
        // 创建一行
        HSSFRow row = sheet.createRow(0);
        row.setHeight((short) 800);
        
        // 创建字体样式    --头
        HSSFFont font = wb.createFont();
        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
        font.setFontName("微软雅黑");
        
        // 创建样式  --头
        HSSFCellStyle styleTitle = wb.createCellStyle();
        styleTitle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        styleTitle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
        styleTitle.setFont(font);
        styleTitle.setBorderTop(HSSFCellStyle.BORDER_THIN);
        styleTitle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        styleTitle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        styleTitle.setBorderRight(HSSFCellStyle.BORDER_THIN);
        
        //创建字体样式    --体
        HSSFFont fontCell = wb.createFont();
        font.setFontName("微软雅黑");
        
        //创建样式    --体
        HSSFCellStyle styleCell = wb.createCellStyle();
        styleCell.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        styleCell.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
        styleCell.setFont(fontCell);
        styleCell.setBorderTop(HSSFCellStyle.BORDER_THIN);
        styleCell.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        styleCell.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        styleCell.setBorderRight(HSSFCellStyle.BORDER_THIN);
        
        // 设置头信息
        HSSFCell cell_01 = row.createCell(0);
        cell_01.setCellStyle(styleTitle);
        cell_01.setCellValue("项目名称");
        
        
        HSSFCell cell_02 = row.createCell(1);
        cell_02.setCellStyle(styleTitle);
        cell_02.setCellValue("项目编号 ");
        
        HSSFCell cell_03 = row.createCell(2);
        cell_03.setCellStyle(styleTitle);
        cell_03.setCellValue("ERP项目号 ");
        
        HSSFCell cell_04 = row.createCell(3);
        cell_04.setCellStyle(styleTitle);
        cell_04.setCellValue("项目经理 ");
        
        HSSFCell cell_05 = row.createCell(4);
        cell_05.setCellStyle(styleTitle);
        cell_05.setCellValue("销售经理");
        
        HSSFCell cell_06 = row.createCell(5);
        cell_06.setCellStyle(styleTitle);
        cell_06.setCellValue("创建时间");
        
        HSSFCell cell_07 = row.createCell(6);
        cell_07.setCellStyle(styleTitle);
        cell_07.setCellValue("审核状态");
        
        HSSFCell cell_08 = row.createCell(7);
        cell_08.setCellStyle(styleTitle);
        cell_08.setCellValue("项目生命周期状态");
        SimpleDateFormat sb = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
        for (int i = 0; i < ps.size(); i++) {
            PmItemMaintainMVO p = ps.get(i);
            
            HSSFRow    r = sheet.createRow(i+1);
            r.setHeight((short) 400);
            
            HSSFCell cell_1 = r.createCell(0);
            cell_1.setCellStyle(styleCell);
            cell_1.setCellValue(p.getName());
            
            HSSFCell cell_2 = r.createCell(1);
            cell_2.setCellStyle(styleCell);
            cell_2.setCellValue(p.getItemCode());
            
            HSSFCell cell_3 = r.createCell(2);
            cell_3.setCellStyle(styleCell);
            cell_3.setCellValue(p.getErpCode());
            
            HSSFCell cell_4 = r.createCell(3);
            cell_4.setCellStyle(styleCell);
            cell_4.setCellValue(p.getProjectManagerName());
            
            HSSFCell cell_5 = r.createCell(4);
            cell_5.setCellStyle(styleCell);
            cell_5.setCellValue(p.getSalesManagerName());
            
            HSSFCell cell_6 = r.createCell(5);
            cell_6.setCellStyle(styleCell);
            cell_6.setCellValue(sb.format(p.getCreated()));
            
            HSSFCell cell_7 = r.createCell(6);
            cell_7.setCellStyle(styleCell);
            cell_7.setCellValue(p.getStatusName());
            
            HSSFCell cell_8 = r.createCell(7);
            cell_8.setCellStyle(styleCell);
            cell_8.setCellValue(p.getProjectStatusName());
        }
        sheet.autoSizeColumn(0);
        sheet.autoSizeColumn(1);
        sheet.autoSizeColumn(2);
        sheet.autoSizeColumn(3);
        sheet.autoSizeColumn(4);
        sheet.autoSizeColumn(5);
        sheet.autoSizeColumn(6);
        sheet.autoSizeColumn(7);
        return wb;
    }
sheet.autoSizeColumn(7); 单元格自动适应大小,注意,这里的自适应有问题。
posted @ 2016-01-04 17:12  哎呦喂,我的小祖宗╰つ  阅读(563)  评论(0编辑  收藏  举报