POI导出Excel合并单元格时的边框问题

在Excel中合并了单元格,仅使用的是下面的代码

        CellRangeAddress cra = new CellRangeAddress(0, 0, 0, (rowName.length-1));
        sheet.addMergedRegion(cra);

可以顺利地合并指定区域的单元格,但是其边框却无法显示完全,采用poi中的RegionUtil类可以成功解决:

    /**
     * @param border 边框宽度
     * @param region 合并单元格区域范围
     * @param sheet  
     * @param wb
     */
    public static void setRegionBorder(int border, CellRangeAddress region, Sheet sheet,Workbook wb){  
        RegionUtil.setBorderBottom(border,region, sheet, wb);  
        RegionUtil.setBorderLeft(border,region, sheet, wb);  
        RegionUtil.setBorderRight(border,region, sheet, wb);  
        RegionUtil.setBorderTop(border,region, sheet, wb);  
    } 

这里是局部的调用示例:

        //表格标题行
        HSSFCellStyle style0 = getStyle(wb, "宋体", 24, HSSFFont.BOLDWEIGHT_BOLD, HSSFCellStyle.ALIGN_CENTER, HSSFCellStyle.VERTICAL_CENTER);
        HSSFRow rowm0 = sheet.createRow(0);
        rowm0.setHeightInPoints(76);//设置行的高度是50个点
        HSSFCell cellTiltle = rowm0.createCell(0);
        cra = new CellRangeAddress(0, 0, 0, (rowName.length-1));
        sheet.addMergedRegion(cra);
        setRegionBorder(1, cra, sheet, wb);//合并单元格并设置边框
        cellTiltle.setCellValue(title);
        cellTiltle.setCellStyle(style0);
    /**
     * 数据信息单元格样式  
     * @param workbook
     * @param fontName
     * @param fontSize
     * @param fontWeight
     * @param horAlignment
     * @param verAlignment
     * @return
     */
    public static HSSFCellStyle getStyle(HSSFWorkbook workbook,String fontName,int fontSize,int fontWeight,int horAlignment,int verAlignment) {
        // 设置字体
        HSSFFont font = workbook.createFont();
        //设置字体大小
        font.setFontHeightInPoints((short)fontSize);
        //字体加粗
        font.setBoldweight((short) fontWeight);
        //设置字体名字 
        font.setFontName(fontName);
        //设置样式; 
        HSSFCellStyle style = workbook.createCellStyle();
        //设置底边框; 
        style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        //设置底边框颜色;  
        style.setBottomBorderColor(HSSFColor.BLACK.index);
        //设置左边框;   
        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        //设置左边框颜色; 
        style.setLeftBorderColor(HSSFColor.BLACK.index);
        //设置右边框; 
        style.setBorderRight(HSSFCellStyle.BORDER_THIN);
        //设置右边框颜色; 
        style.setRightBorderColor(HSSFColor.BLACK.index);
        //设置顶边框; 
        style.setBorderTop(HSSFCellStyle.BORDER_THIN);
        //设置顶边框颜色;  
        style.setTopBorderColor(HSSFColor.BLACK.index);
        //在样式用应用设置的字体;  
        style.setFont(font);
        //设置自动换行; 
        style.setWrapText(true);
        //设置水平对齐的样式为居中对齐;  
        style.setAlignment((short) horAlignment);
        //设置垂直对齐的样式为居中对齐; 
        style.setVerticalAlignment((short) verAlignment);

        return style;
    }
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值