• java poi导出Excel合并单元格并设置边框


    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFCellStyle;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.ss.util.CellRangeAddress;
    import org.apache.poi.ss.util.RegionUtil;
    
    //写入Excel,读取模板
    InputStream    stram= view.getDesktop().getWebApp().getResourceAsStream(File.separator+"Template"+File.separator+"interviewPublicity.xls");
    HSSFWorkbook workbook = new HSSFWorkbook(stram);
    HSSFSheet sheet = workbook.getSheetAt(0);
    //写入数据
    HSSFRow row = sheet.getRow(0);
    HSSFCell cell = row.getCell(0);
    index = 4;
    //单元格格式
    row = sheet.getRow(index);
    cell= row.getCell(0);
    HSSFCellStyle cellStyle = cell.getCellStyle();
    int num = 1;
    for (Entry<String, Map<String, List<BasicDBObject>>> bmd : bmdMap.entrySet()) {
        //单位
        int deptRowIndex = index;
        int deptRowEndIndex = deptRowIndex;
        //岗位集合
        for (Entry<String, List<BasicDBObject>> empList : bmd.getValue().entrySet()) {
            //岗位
            int jobRowIndex = index;
            //考生
            for (BasicDBObject emp : empList.getValue()) {
                if (index > 4) {
                    row = sheet.createRow(index);
                    cell= row.createCell(0);
                }
                cell.setCellValue(num++);
                cell.setCellStyle(cellStyle);
                cell= row.createCell(3);
                cell.setCellValue(emp.getString("姓名"));
                cell.setCellStyle(cellStyle);
                cell= row.createCell(4);
                cell.setCellValue(emp.getString("examCardId"));
                cell.setCellStyle(cellStyle);
                index++;
            }
            row = sheet.getRow(jobRowIndex);
            if (empList.getValue().size() > 1) {
                int jobRowEndIndex = jobRowIndex + empList.getValue().size() - 1;
                //合并单元格
                CellRangeAddress cellRange = new CellRangeAddress(jobRowIndex, jobRowEndIndex, (short) 2, (short) 2);
                sheet.addMergedRegion(cellRange);
                //添加边框
                RegionUtil.setBorderTop(1, cellRange, sheet, workbook);
                RegionUtil.setBorderBottom(1, cellRange, sheet, workbook);
                RegionUtil.setBorderLeft(1, cellRange, sheet, workbook);
                RegionUtil.setBorderRight(1, cellRange, sheet, workbook);
            }
            cell= row.createCell(2);
            cell.setCellValue(empList.getKey());
            cell.setCellStyle(cellStyle);
            
            deptRowEndIndex += empList.getValue().size();
        }
        row = sheet.getRow(deptRowIndex);
        if (deptRowEndIndex-1 > deptRowIndex) {
            //合并单元格
            CellRangeAddress cellRange = new CellRangeAddress(deptRowIndex, deptRowEndIndex-1, (short) 1, (short) 1);
            sheet.addMergedRegion(cellRange);
            //为合并单元格添加边框
            RegionUtil.setBorderTop(1, cellRange, sheet, workbook);
            RegionUtil.setBorderBottom(1, cellRange, sheet, workbook);
            RegionUtil.setBorderLeft(1, cellRange, sheet, workbook);
            RegionUtil.setBorderRight(1, cellRange, sheet, workbook);
        }
        cell= row.createCell(1);
        cell.setCellValue(bmd.getKey());
        cell.setCellStyle(cellStyle);
    }
    String fileName = getExamPlan().getString("bmbName")+"面试人员名单公示.xls";
    ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
    workbook.write(byteOut);
    byteOut.close();
    
    InputStream is = new ByteArrayInputStream(byteOut.toByteArray());
    Filedownload.save(is, null, fileName);//OFBIZ导出
  • 相关阅读:
    BZOJ 3924: [Zjoi2015]幻想乡战略游戏
    codevs 4244 平衡树练习
    BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊
    BZOJ 2038: [2009国家集训队]小Z的袜子
    luogu P3709 大爷的字符串题
    BZOJ 2120: 数颜色
    luogu P2056 采花
    luogu P2709 小B的询问
    BZOJ 1878: [SDOI2009]HH的项链
    Codeforces 221d D. Little Elephant and Array
  • 原文地址:https://www.cnblogs.com/BobXie85/p/11174787.html
Copyright © 2020-2023  润新知