苍穹外卖day12(完结撒花)——工作台+Spring_Apche_POI+导出运营数据Excel报表

news2024/11/15 11:29:43

工作台——需求分析与设计

产品原型

接口设计 

 

 

 

 

工作台——代码导入

将提供的代码导入对应的位置。

工作台——功能测试

 Apache POI_介绍

应用场景

 

 

 

 

 Apache POI_入门案例

导入坐标

            <!-- poi -->
            <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>

通过POI向Excel文件写入文件内容

/**
 * 使用POI操作Excel文件
 *
 */
public class POITest {

    /**
     * 通过POI创建Excel文件并且写入文件内容
     */
    public static void write() throws IOException {
        //在内存中创建一个Excel文件
        XSSFWorkbook excel=new XSSFWorkbook();
        //在Excel文件中创建一个Sheet页
        XSSFSheet sheet = excel.createSheet("info");
        //在Sheet中创建行对象,编号从0开始,1表示第二行
        XSSFRow row = sheet.createRow(1);
        //创建单元格,同样从0开始,1,2表示第2和第3格
        XSSFCell cell1 = row.createCell(1);
        XSSFCell cell2 = row.createCell(2);
        //在单元格写入文本内容
        cell1.setCellValue("姓名");
        cell2.setCellValue("城市");

        //创建一个新行
        row= sheet.createRow(2);
        row.createCell(1).setCellValue("张三");
        row.createCell(2).setCellValue("北京");

        row= sheet.createRow(3);
        row.createCell(1).setCellValue("鼠鼠");
        row.createCell(2).setCellValue("北岭山");

        //通过输出流将内存中的Excel文件写入到磁盘
        FileOutputStream out = new FileOutputStream(new File("H:\\workspace\\changqiong\\info.xlsx"));
        excel.write(out);

        //关闭资源
        out.close();
        excel.close();
    }

    public static void main(String[] args) throws IOException {
        write();
    }
}

效果展示 

 通过POI读取Excel文件内容

    /**
     * 通过POI读取Excel文件内容
     * @throws Exception
     */
    public static void read() throws Exception{
        InputStream in =new FileInputStream(new File("H:\\workspace\\changqiong\\info.xlsx"));
        //读取磁盘上已经存在的Excel文件
        XSSFWorkbook excel=new XSSFWorkbook(in);
        //读取Excel文件中的第一个Sheet页
        XSSFSheet sheet = excel.getSheetAt(0);
        //获取有文字的最后一行的行号
        int lastRowNum = sheet.getLastRowNum();

        for(int i=1;i<=lastRowNum;i++){
            //获得某一行
            XSSFRow row = sheet.getRow(i);
            //获得单元格
            String CellValue1 = row.getCell(1).getStringCellValue();
            String CellValue2 = row.getCell(2).getStringCellValue();
            System.out.println(CellValue1+" "+CellValue2);
        }
        //关闭资源
        in.close();
        excel.close();
    }

读取上面创建的Excel文件并输出得到

 导出运营数据Excel报表——需求分析与设计

产品原型

 

 接口设计

 

 导出运营数据Excel报表——代码开发

实现步骤

 Controller中

    /**
     * 导出运营数据报表
     * @param response
     */
    @ApiOperation("导出运营数据报表")
    @GetMapping("export")
    public void export(HttpServletResponse response){
        reportService.exportBusinessData(response);
    }

Service中

/**
     * 导出运营数据报表
     * @param response
     */
    @Override
    public void exportBusinessData(HttpServletResponse response) {
        //1.查询数据库,获取营业数据----查询最近30天运营数据
        LocalDate dateBegin = LocalDate.now().minusDays(30);
        LocalDate dateEnd = LocalDate.now().minusDays(1);
        //查询概览数据
        BusinessDataVO businessDataVO = workspaceService.getBusinessData(LocalDateTime.of(dateBegin, LocalTime.MIN), LocalDateTime.of(dateEnd, LocalTime.MAX));

        //2.通过POI将数据写入到Excel文件中
          //获得这个类对象,获得类加载器,从类路径下读取资源返回一个输入流对象
        InputStream in = this.getClass().getClassLoader().getResourceAsStream("template/运营数据报表模板.xlsx");

        try {
            //基于模板文件创建一个新的Excel文件
            XSSFWorkbook excel=new XSSFWorkbook(in);
            //获取表格文件的Sheet页
            XSSFSheet sheet = excel.getSheet("Sheet1");
            //填充数据--时间
            sheet.getRow(1).getCell(1).setCellValue("时间:"+dateBegin+"至"+dateEnd);
            //获得第4行
            XSSFRow row = sheet.getRow(3);
            row.getCell(2).setCellValue(businessDataVO.getTurnover());
            row.getCell(4).setCellValue(businessDataVO.getOrderCompletionRate());
            row.getCell(6).setCellValue(businessDataVO.getNewUsers());

            //获得第5行
            row= sheet.getRow(4);
            row.getCell(2).setCellValue(businessDataVO.getValidOrderCount());
            row.getCell(4).setCellValue(businessDataVO.getUnitPrice());


            //填充明细数据
            for(int i=0;i<30;i++){
                LocalDate date =dateBegin.plusDays(i);
                //查询某一天的营业数据
                BusinessDataVO businessData = workspaceService.getBusinessData(LocalDateTime.of(date, LocalTime.MIN), LocalDateTime.of(date, LocalTime.MAX));

                //获得某一行
                 row = sheet.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());
            }

            //3.通过输出流将Excel下载到客户端浏览器
            ServletOutputStream out = response.getOutputStream();
            excel.write(out);

            //关闭资源
            out.close();
            excel.close();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

Mapper中

使用了workspaceService里面的方法中的Mapper

 

 导出运营数据Excel报表——功能测试

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/821363.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图解架构 | SaaS、PaaS、IaaS/aPaaS平台是什么?aPaaS与PaaS有什么区别?

参考 图解架构 | SaaS、PaaS、IaaS:https://www.51cto.com/article/717315.html aPaaS平台是什么&#xff1f;aPaaS与PaaS有什么区别&#xff1f;&#xff1a;https://developer.aliyun.com/article/718714 aPaaS和PaaS的区别是什么&#xff1f; aPaaS和PaaS都可以完成软件的…

06-向量的更多术语和表示法

向量 引入的概念&#xff1a;向量就是一组有序的数字, 我们在理解它的时候&#xff0c; 可以把它理解成是一个有效的线段&#xff0c;也可以把它理解成是空间中的一个点&#xff0c;那么与之相对应的一个数字&#xff0c;也就是我们在初等数学中学的一个一个数&#xff0c;我们…

【文生图系列】Runaway Gen-2试用体验

文章目录 风景示例动物示例人物动作示例 Runway旗下的视频生成产品Gen-1和Gen-2已彻底开放&#xff0c;任何人都可注册一个账号免费尝试。免费的时长是105s&#xff0c;每个视频生成4s。 看gen-2官网和各公众号放出来的示例&#xff0c;非常震撼&#xff0c;不禁感慨现在文生视…

在ChinaJoy里,看见数字经济“供给创造需求”新范本

作者 | 曾响铃 文 | 响铃说 “太爽了&#xff0c;没想到在这看到了武汉eStarPro战队现场打王者。” “真没想到这个跑步机&#xff0c;我戴上VR眼镜1秒穿越到鼓浪屿&#xff0c;居然在海边跑步。” “那个《头号赛车》好玩&#xff0c;超远距离控制真实车模在真实赛道飙车&…

[每日习题]动态规划——公共子串计算 通配符匹配——牛客习题

hello,大家好&#xff0c;这里是bang___bang_&#xff0c;本篇记录2道牛客习题&#xff0c;公共子串计算&#xff08;中等&#xff09;&#xff0c;通配符匹配&#xff08;较难&#xff09;&#xff0c;如有需要&#xff0c;希望能有所帮助&#xff01; 目录 1️⃣公共子串计算…

AI实战干货,用AI 5分钟做1本超清画质原创绘本

Hi~我是专注于AI技术教程和项目实战的赤辰。 上期给大家分享了用ChatGPT生产配音的方法教程&#xff0c;反馈还是很热烈的&#xff0c;今天给大家带来一个用ChatGPT 5分钟生产出高画质精品绘本的教程。目前就有朋友通过这个插件制作育儿绘本教材&#xff0c;然后在亚马逊和小红…

UE4 网格体闪烁问题解决

情形1 模型摆放共面导致闪烁 解决&#xff1a;模型的表面重叠引起的闪烁&#xff0c;将模型间距隔开1-2cm&#xff0c;视觉效果基本看不出来&#xff0c;但是能够很好解决表面山数艘问题。 情形2 模型建模时相接部分共面导致闪烁 解决&#xff1a;模型建模时不同组件使用过不…

用于紫外线消毒灯的LED驱动:数明深紫外消毒方案SLM201

用于紫外线消毒灯的LED驱动SLM201 应用于紫外线消毒灯的LED驱动。疫情过后让越来越多的人开始注重起个人健康&#xff0c;除了出门佩戴口罩外&#xff0c;对于居家消毒也越发重视起来。而居家消毒除了75%浓度酒精及各类消毒液外&#xff0c;利用紫外线灯给衣物表面、房间消毒也…

计算球体上一点指向球心的姿态

背景&#xff1a;最近有个需求&#xff0c;需要用相机拍摄一个物品&#xff0c;初始状态下相机在该物体正上方&#xff0c;随后相机的坐标按一定规律变化&#xff0c;要求它的视野中心一直固定在该物体上。这个问题可以理解为&#xff1a;以物品建立一个坐标系&#xff0c;相机…

C++ 类和对象篇(三) 空类和默认成员函数

目录 一、空类 二、6个默认成员函数 一、空类 1.是什么&#xff1f; 如果一个类中没有显示定义任何成员&#xff0c;简称为空类。 class A {};//一个空类 2.空类中的成员&#xff1f; 空类中真的什么都没有吗&#xff1f; 并不是&#xff0c;任何类在什么都不写时&#xff0c…

quickping探查在线设备的缺陷

在单位工作的一部分是网络维护&#xff0c;发现在单位淘汰win7后&#xff0c;大量win10&#xff0c;win11设备使用后&#xff0c;探查在线设备用的quickping越来越不靠谱&#xff0c;发现有时使用后探查后&#xff0c;没有使用的ip&#xff0c;配置后会出现ip冲突&#xff0c;决…

[Pytorch]卷积运算conv2d

文章目录 [Pytorch]卷积运算conv2d一.F.Conv2d二.nn.Conv2d三.nn.Conv2d的运算过程 [Pytorch]卷积运算conv2d 一.F.Conv2d torch.nn.functional.Conv2d()的详细参数&#xff1a; conv2d(input: Tensor, weight: Tensor, bias: Optional[Tensor]None, stride: Union[_int, _s…

Apache RocketMQ 远程代码执行漏洞(CVE-2023-33246)

漏洞简介 RocketMQ 5.1.0及以下版本&#xff0c;在一定条件下&#xff0c;存在远程命令执行风险。RocketMQ的NameServer、Broker、Controller等多个组件外网泄露&#xff0c;缺乏权限验证&#xff0c;攻击者可以利用该漏洞利用更新配置功能以RocketMQ运行的系统用户身份执行命…

BAPI_GOODSMVT_CREATE 更改凭证的创建人

凭证创建时(创建人)需要更改为其它人员 1. 复制BAPI_TE_XMKPF, 增加字段USNAM 2. SE18: BADI名称 - MB_BAPI_GOODSMVT_CREATE 创建badi实施 3. 增强代码编辑如下: method if_ex_mb_bapi_goodsmvt_create~extensionin_to_matdoc.data: lt_extension type standard table …

力扣320. 列举单词的全部缩写

单词的 广义缩写词 可以通过下述步骤构造&#xff1a;先取任意数量的 不重叠、不相邻 的子字符串&#xff0c;再用它们各自的长度进行替换。 例如&#xff0c;“abcde” 可以缩写为&#xff1a; “a3e”&#xff08;“bcd” 变为 “3” &#xff09; “1bcd1”&#xff08;“a…

Linux第六章之vim与gcc使用

一、Linux编辑器-vim使用 vi/vim的区别简单点来说&#xff0c;它们都是多模式编辑器&#xff0c;不同的是vim是vi的升级版本&#xff0c;它不仅兼容vi的所有指令&#xff0c;而且还有一些新的特性在里面。例如语法加亮&#xff0c;可视化操作不仅可以在终端运行&#xff0c;也…

【数据分享】1999—2021年地级市各类交通工具的客货运量和拥有量数据(Shp/Excel格式)

1999-2021年地级市的人口相关数据、各类用地面积数据、污染物排放和环境治理相关数据、房地产投资情况和商品房销售面积、社会消费品零售总额和年末金融机构存贷款余额、地方一般公共预算收支状况、工业企业数、固定资产投资和对外经济贸易数据、科技创新指标数据、劳动力就业及…

软考中级信息安全工程师2023下半年报名时间及报名入口官网

软考中级信息安全工程师2023下半年考试时间&#xff1a; 2023年下半年软考中级信息安全工程师的考试时间为11月4日、5日。考试时间在全国各地一致&#xff0c;建议考生提前备考。共分两科&#xff0c;第一科基础知识考试具体时间为9:00-11:30&#xff1b;第二科应用技术考试具…

【Android Framework系列】第9章 AMS之Hook实现登录页跳转

1 前言 前面章节我们学习了【Android Framework系列】第5章 AMS启动流程和【Android Framework系列】第6章 AMS原理之Launcher启动流程&#xff0c;大概了解了AMS的原理及启动流程&#xff0c;这一章节我们通过反射和动态代理对不同Android版本下的AMS进行Hook&#xff0c;实现…

Ansible —— playbook 剧本

Ansible —— playbook 剧本 一、playbook的概述1.playbook简介2.什么是Ansible playbook剧本&#xff1f;3.Ansible playbook剧本的特点4.如何使用Ansible playbook剧本&#xff1f;5.playbooks 本身由以下各部分组成 二、playbook示例1.运行playbook2.定义、引用变量3.指定远…