JAVA使用POI (3.17)版本进行Excel导出

最近几天接了个导出功能的活,而且比较复杂,经常跨行跨列的,刚开始写一头雾水,度娘一下好多的都不可以用在这里详细的给大家讲解一下,写的不好请谅解

// 创建一个Excel文件

    Workbook workbook = new SXSSFWorkbook();

      Sheet hsheet =  workbook.createSheet(Name());// 创建一个Excel的Sheet 
            hsheet.setColumnWidth(0, 6500);//列宽
            hsheet.setColumnWidth(1, 6500);//列宽
            hsheet.setColumnWidth(2, 8500);//列宽
            hsheet.setColumnWidth(3, 10000);//列宽
            hsheet.setColumnWidth(4, 10000);//列宽

       //创建样式
        CellStyle cellStyle = workbook.createCellStyle();

     //设置字体
        Font font = workbook.createFont();
        font.setFontName("微软雅黑");
        font.setFontHeightInPoints((short) 12);

       cellStyle .setFont(font ); //引用字体样式

        cellStyle .setAlignment(HorizontalAlignment.CENTER);//设置居中 为水平居中
        cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//设置居中 为上下居中
        cellStyle.setWrapText(true);//设置自动换行
        cellStyle.setBorderBottom(BorderStyle.THIN); //下边框    
        cellStyle.setBorderLeft(BorderStyle.THIN);//左边框    
        cellStyle.setBorderTop(BorderStyle.THIN);//上边框    
        cellStyle.setBorderRight(BorderStyle.THIN);//右边框    

      Row rows = hsheet.createRow(0);//创建行
      Cell[] cell = { rows.createCell(3),rows.createCell(4)};
       cell[0].setCellValue(“大大大”);给0行的3列赋值
       cell[1].setCellValue(“小小”);//给0行的4列赋值
       cell[0].setCellStyle(cellStyle);//引用样式   注意这些样式值对单个框生效
       cell[1].setCellStyle(cellStyle);//引用样式   注意这些样式值对单个框生效

      //这个是整列都引用样式  发现有的样式会不生效

       hsheet.setDefaultColumnStyle(1, cellStyle);//参数1 为列 参数2为样式  整列可以引用改样式

如果你想跨行或者跨列来合并 那么继续引用上面的样式则部分不生效

比如说边框 所以要想给合并之后的增加边框则使用以下方法:

CellRangeAddress cra =new CellRangeAddress(1, 2, 2, 2);// 开始行,结束行,开始列,结束列。
hsheet.addMergedRegion(cra);//执行合并

setRegionBorder(1, cra, hsheet);//这个是抽离出来的方法  可以共用

具体方法如下:

/**

public static void setRegionBorder(int border, CellRangeAddress region, Sheet sheet){  
        RegionUtil.setBorderBottom(border,region, sheet);  //第一个参数为数字 我填的1具体干嘛用的我也不是很清楚
        RegionUtil.setBorderLeft(border,region, sheet);  //第二个参数为上边new 的 需要合并的地址
        RegionUtil.setBorderRight(border,region, sheet);  //第三个参数为 sheet页
        RegionUtil.setBorderTop(border,region, sheet);  
    } 

*/

这样合并的单元格才会有边框,

还有我写的东西赋值有可能跟百度搜出来的不一致,我觉得是跟版本有关系;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值