zoukankan      html  css  js  c++  java
  • 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); 单元格自动适应大小,注意,这里的自适应有问题。
  • 相关阅读:
    安装centos出现的问题
    linux学习笔记
    sails框架结合mocha的测试环境搭建
    sails框架结合mocha
    使用postman发送http请求
    C++之易混淆知识点三---算法分析
    复习一下单链表的常用操作
    C++之易混淆知识点二
    FPGA之阻塞赋值与非阻塞赋值
    C++之易混淆知识点一-----static详解
  • 原文地址:https://www.cnblogs.com/duwenlei/p/5099605.html
Copyright © 2011-2022 走看看