关于POI的excel的导入导出简单使用

本文介绍了ApachePOI,一个用于在Java中读写MicrosoftOffice文件的开源库,重点讲解了在银行网银系统中如何使用POI进行Excel文件操作,包括引入依赖、创建模板和填充数据的过程。
摘要由CSDN通过智能技术生成

Apache POI介绍:

        Apache POl 是一个处理Miscrosoft Office各种 文件格式的开源项目。简单来说就是,我们可以使用POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。在一般情况下,POI都是用于操作 Excel 文件。

POI使用场景:

        银行网银系统导出交易明细、各种业务的导出excel报表、批量导入业务数据等

如何使用:

        首先我们需要引入POI的Maven坐标

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

        然后我们需要创建实体类来对excel模板进行操作如下(这是我在苍穹外卖导出数据时使用到的方法)

 /**
     * @description
     ***:导出运营数据报表
     **/
    public void exportBusinessDate(HttpServletResponse response) {
        //查询数据库,获取营业数据
        LocalDate beginTime = LocalDate.now().minusDays(30);
        LocalDate endTime = LocalDate.now().minusDays(1);

        BusinessDataVO businessVO = workspaceService.getBusinessData(
                LocalDateTime.of(beginTime, LocalTime.MIN),
                LocalDateTime.of(endTime, LocalTime.MAX));

        //写入到excel文件中
        InputStream in = this.getClass().getClassLoader().getResourceAsStream("template/运营数据报表模板.xlsx");

        try {
            //基于模板创建一个新的excel文件
            XSSFWorkbook excel = new XSSFWorkbook(in);

            //填充数据 -- 概览数据
            XSSFSheet sheet1 = excel.getSheet("Sheet1");
            sheet1.getRow(1).getCell(1).setCellValue("时间:"+beginTime+" 至 "+endTime);//设置时间区域
            XSSFRow row = sheet1.getRow(3);
            row.getCell(2).setCellValue(businessVO.getTurnover());//设置营业额
            row.getCell(4).setCellValue(businessVO.getOrderCompletionRate());//订单完成率
            row.getCell(6).setCellValue(businessVO.getNewUsers());//新增用户数

            row = sheet1.getRow(4);
            row.getCell(2).setCellValue(businessVO.getValidOrderCount());//有效订单
            row.getCell(4).setCellValue(businessVO.getUnitPrice());//平均客单价

            //填充数据 -- 明细数据
            for (int i = 0;i<30;i++){
                LocalDate date = beginTime.plusDays(i);

                BusinessDataVO businessData = workspaceService.getBusinessData(
                        LocalDateTime.of(date, LocalTime.MIN),
                        LocalDateTime.of(date, LocalTime.MAX));//获得当天的营业数据

                row = sheet1.getRow(7+i);
                row.getCell(1).setCellValue(date.toString());
                row.getCell(2).setCellValue(businessData.getTurnover());
                row.getCell(3).setCellValue(businessData.getValidOrderCount());
                row.getCell(4).setCellValue(businessData.getOrderCompletionRate());
                row.getCell(5).setCellValue(businessData.getUnitPrice());
                row.getCell(6).setCellValue(businessData.getNewUsers());

            }


            //通过输出流下载到浏览器
            ServletOutputStream ot = response.getOutputStream();
            excel.write(ot);

            //关闭资源
            excel.close();
            ot.close();
        } catch (Exception e) {
            e.printStackTrace();
        }



    }

导出数据时使用到的模板:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这种幸福很生活

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值