zoukankan      html  css  js  c++  java
  • 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导出
  • 相关阅读:
    TDirectory.GetParent获取指定目录的父目录
    TDirectory.GetLogicalDrives获取本地逻辑驱动器
    获取设置目录创建、访问、修改时间
    TDirectory.GetLastAccessTime获取指定目录最后访问时间
    TDirectory.GetDirectoryRoot获取指定目录的根目录
    「洛谷P1262」间谍网络 解题报告
    「洛谷P1198」 [JSOI2008]最大数 解题报告
    「洛谷P3931」 SAC E#1
    「UVA1328」「POJ1961」 Period 解题报告
    「博客美化」I 页面的CSS
  • 原文地址:https://www.cnblogs.com/BobXie85/p/11174787.html
Copyright © 2011-2022 走看看