JAVA 使用 POI实现数据导出到Excel

前言:

    人生中第一次发布博客,怎么说还是有点紧张的。希望各位看官多多支持~~~惊恐

引入:

    就在上个礼拜,项目中有一个需求就是把一些数据导出到Excel中,并且要求Excel要按照规定的内容和排版显示导出来的数据。

    当时看到这个需求内心还是有点小压力的,毕竟刚刚做后台没多久(ps:我在外包公司,有什么就写什么。哈哈【Fuck!】)

    当然有压力还是没压力,该写还是要写的,我就开始上网查了一些关于 JAVA导出数据到Excel的一些相关文章 ,被一些只展示部分代码的那些自认为大佬的那些朋友们坑的不轻,展示的都是很简单的东西而且大家都会的,源码有的还有花钱才能下载!面对这些我决定自己研究研究,如果搞出来的话就免费发布出来,给大家提供方便或者解决一些大家出现的问题。

    还好,我搞出来了。

    说了一堆废话,讽刺一下那些大佬们。鼓励一下遇到问题没有找到合适答案的朋友们,多去研究咱们一样可以解决问题奋斗

进入主题:

    我使用的是JAVA POI实现的导出Excel。

    当然一看名字就知道是一个库或者是一个框架,那当然少不了jar包啦!

    第一步:这边因为需求是要用SpringBoot写,所以我使用了POM文件导入依赖,【如下图】

<dependency>
   <groupId>org.apache.poi</groupId>
   <artifactId>poi</artifactId>
   <version>3.15</version>
</dependency>
<dependency>
   <groupId>org.apache.poi</groupId>
   <artifactId>poi-ooxml-schemas</artifactId>
   <version>3.15</version>
</dependency>
<dependency>
   <groupId>org.apache.poi</groupId>
   <artifactId>poi-ooxml</artifactId>
   <version>3.15</version>
</dependency>

    第二步:导入了依赖之后,切记不要着急,等待右下角提示导入依赖选择后才是真正的导入了POI的依赖!【如下图】


        选择Import Changes 或者 Enable Auto-Import都可以,左边是每次修改依赖都需要手动去导入,右边是每次修改依赖之后自动导入,选择任意一个都可以!

    第三步:扩展一下知识点

        这里说一个小小的扩展:

            POI 提供了对2003版本的Excel的支持 ---- HSSFWorkbook

            POI 提供了对2007版本以及更高版本的支持 ---- XSSFWorkbook

            这个不用犯愁很好记: 2003版本的就记住一个H,2007以及更高版本的就记住一个X!

    第四步: 进入重头戏

        1、我们要拿到对应版本的对象,因为现在都是高本的的Excel,所以我使用了上面提到的 XSSFWorkbook       

XSSFWorkbook wb = new XSSFWorkbook();

        2、拿到了wb之后,我们就可以对Excel进行排版布局了,是不是有点小激动

        3、添加一个页

Sheet sheet = wb.createSheet("0");

        这一步我们实现的就是Excel打开之后左下角的那个Sheet,也就是当前页!

        4、开始设置Excel的排版样式【ps:具体样式根据项目需求来定,这里我举一个很大众化的布局】

            

        相信大多数的需求应该都和这个差不多吧,开始啦。

        【1】 拿到设置Excel表格样式的对象 CellStyle

        然后需要把我们最开始获取的那个wb传进来,就可以对单元格进行排版了。

        这里我提供一些最常用的样式:

        (单元格样式) 为什么只有后两条有注释呢,那是因为我相信聪明伶俐的你们都看得懂。。哈哈哈 border很明显边框嘛

CellStyle cellStyle = wb.createCellStyle();
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);

cellStyle.setBorderTop(BorderStyle.THIN);
cellStyle.setBorderBottom(BorderStyle.THIN);
cellStyle.setBorderLeft(BorderStyle.THIN);
cellStyle.setBorderRight(BorderStyle.THIN);

cellStyle.setTopBorderColor(HSSFColor.BLACK.index);
cellStyle.setBottomBorderColor(HSSFColor.BLACK.index);
cellStyle.setLeftBorderColor(HSSFColor.BLACK.index);
cellStyle.setRightBorderColor(HSSFColor.BLACK.index);

cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平居中
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); // 上下居中

         ÿ

  • 24
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值