获取API后将数据清洗后输出excle的实战案例

简介: 获取API后将数据清洗后输出excle的实战案例

项目需求

  1. 客户指定API,爬取数据格式如下
objid: 11405,
probe: "北师大附中",
group: "安防前端设施",
device: "C4办公室外北通道|192.168.10.10",
sensor: "PING 1",
status: "正常运行"
status_raw: 3


  1. 如要将对应的JSON数据,自动保存为excle表格,其中device: "C4办公室外北通道|192.168.10.10",需要分拆成两个字段保存。即在excle保存成两列;
  2. 后端php,前端js;


需求分析

  1. 爬出JSON数据,保存为表格,使用JsonExportExcel.min.js插件;
  2. device数据分列,需要在获取数据后,对数据进行遍历循环,分列成两列即可;


解决方案

数据并进行格式转化

  public function getObjReport()
  {
    global $res, $CONF;
    $group_id = get_param("id");
    if ($group_id && $group_id != "0") {
      $url      = $CONF["apiDomain"] . "api/table.json?content=sensors&output=json&columns=objid,probe,group,device,sensor,status&id=" . $group_id . "&username=" . $CONF["apiUser"] . "&Passhash=" . $CONF["apiPass"];
      $res      = str_replace("prtg-version", "prtg_version", getAPI($url));
      $reArr    = json_decode(getAPI($url), true);
      $dataInfo = $reArr["sensors"];
      //var_dump($dataInfo);
      //遍历数组将device分拆;
      $list = array();
      for ($i = 0; $i < count($dataInfo); $i++) {
        $list['sensors'][$i]['objid']      = $dataInfo[$i]['objid'];
        $list['sensors'][$i]['probe']      = $dataInfo[$i]['probe'];
        $list['sensors'][$i]['group']      = $dataInfo[$i]['group'];
        $list['sensors'][$i]['device']     = explode('|', $dataInfo[$i]['device'])[0];
        $list['sensors'][$i]['ip']         = explode('|', $dataInfo[$i]['device'])[1];
        $list['sensors'][$i]['sensor']     = $dataInfo[$i]['sensor'];
        $list['sensors'][$i]['status']     = $dataInfo[$i]['status'];
        $list['sensors'][$i]['status_raw'] = $dataInfo[$i]['status_raw'];
      }
      //var_dump($list);
      die(json_encode_lockdata($list));
    } else {
      $res["sensors"] = "";
      die(json_encode_lockdata($res));
    }
  }

1690098587533.png


前端导出

ajax调用接口

layui.use(['form', 'layer', 'laydate'], function () {
        var $ = layui.jquery;
        var form = layui.form, layer = layui.layer;
        form.on('submit(add)', function (data) {
            $.ajax({
                type: "get",
                url: "api/api.php?act=getObjReport&token=3cab7ce4142608c0f40c785b5ab5ca24",
                async: true,
                data: {
                    id: $('#id').val(),
                },
                dataType: "json",
                success: function (res) {
                    console.log(res);
                    if (res.sensors) {
                        //生成报表;
                        JsonToExcel('客户信息', res.sensors);
                    } else {
                        layer.alert("筛选条件无数据", {icon: 6});
                    }
                }
            });
            return false;
        });
  }


封装函数

 //导出报表;
        function JsonToExcel(filename, actData) {
            var option = {};
            option.fileName = filename;
            option.datas = [
                {
                    sheetData: actData,
                    sheetName: 'sheet1',
                    sheetFilter: ['objid', 'probe', 'group', 'device', 'ip', 'sensor', 'status', 'status_raw'],
                    sheetHeader: ['设备ID', '单位', '设备归属', '设备名称', '设备IP', '传感器类型', '现在状态', '现在状态代号']
                }
            ];
            var toExcel = new ExportJsonExcel(option);
            toExcel.saveExcel();
        }


ockdatav Done!

相关文章
|
20天前
|
编译器 API Android开发
Android经典实战之Kotlin Multiplatform 中,如何处理不同平台的 API 调用
本文介绍Kotlin Multiplatform (KMP) 中使用 `expect` 和 `actual` 关键字处理多平台API调用的方法。通过共通代码集定义预期API,各平台提供具体实现,编译器确保正确匹配,支持依赖注入、枚举类处理等,实现跨平台代码重用与原生性能。附带示例展示如何定义跨平台函数与类。
48 0
|
1天前
|
Rust API Go
API 网关 OpenID Connect 实战:单点登录(SSO)如此简单
单点登录(SSO)可解决用户在多系统间频繁登录的问题,OIDC 因其标准化、简单易用及安全性等优势成为实现 SSO 的优选方案,本文通过具体步骤示例对 Higress 中开源的 OIDC Wasm 插件进行了介绍,帮助用户零代码实现 SSO 单点登录。
|
20天前
|
存储 Linux API
Linux源码阅读笔记08-进程调度API系统调用案例分析
Linux源码阅读笔记08-进程调度API系统调用案例分析
|
23天前
|
JSON 数据管理 关系型数据库
【Dataphin V3.9】颠覆你的数据管理体验!API数据源接入与集成优化,如何让企业轻松驾驭海量异构数据,实现数据价值最大化?全面解析、实战案例、专业指导,带你解锁数据整合新技能!
【8月更文挑战第15天】随着大数据技术的发展,企业对数据处理的需求不断增长。Dataphin V3.9 版本提供更灵活的数据源接入和高效 API 集成能力,支持 MySQL、Oracle、Hive 等多种数据源,增强 RESTful 和 SOAP API 支持,简化外部数据服务集成。例如,可轻松从 RESTful API 获取销售数据并存储分析。此外,Dataphin V3.9 还提供数据同步工具和丰富的数据治理功能,确保数据质量和一致性,助力企业最大化数据价值。
85 1
|
7天前
|
Java 缓存 数据库连接
揭秘!Struts 2性能翻倍的秘诀:不可思议的优化技巧大公开
【8月更文挑战第31天】《Struts 2性能优化技巧》介绍了提升Struts 2 Web应用响应速度的关键策略,包括减少配置开销、优化Action处理、合理使用拦截器、精简标签库使用、改进数据访问方式、利用缓存机制以及浏览器与网络层面的优化。通过实施这些技巧,如懒加载配置、异步请求处理、高效数据库连接管理和启用GZIP压缩等,可显著提高应用性能,为用户提供更快的体验。性能优化需根据实际场景持续调整。
29 0
|
7天前
|
开发者
告别繁琐代码,JSF标签库带你走进高效开发的新时代!
【8月更文挑战第31天】JSF(JavaServer Faces)标准标签库为页面开发提供了大量组件标签,如`&lt;h:inputText&gt;`、`&lt;h:dataTable&gt;`等,简化代码、提升效率并确保稳定性。本文通过示例展示如何使用这些标签实现常见功能,如创建登录表单和展示数据列表,帮助开发者更高效地进行Web应用开发。
15 0
|
7天前
|
前端开发 API 开发者
【React状态管理新思路】Context API入门:从零开始摆脱props钻孔的优雅之道,全面解析与实战案例分享!
【8月更文挑战第31天】React 的 Context API 有效解决了多级组件间状态传递的 &quot;props 钻孔&quot; 问题,使代码更简洁、易维护。本文通过电子商务网站登录状态管理案例,详细介绍了 Context API 的使用方法,包括创建、提供及消费 Context,以及处理多个 Context 的场景,适合各水平开发者学习与应用,提高开发效率和代码质量。
12 0
|
7天前
|
JSON API 数据库
探索FastAPI:不仅仅是一个Python Web框架,更是助力开发者高效构建现代化RESTful API服务的神器——从环境搭建到CRUD应用实战全面解析
【8月更文挑战第31天】FastAPI 是一个基于 Python 3.6+ 类型提示标准的现代 Web 框架,以其高性能、易用性和现代化设计而备受青睐。本文通过示例介绍了 FastAPI 的优势及其在构建高效 Web 应用中的强大功能。首先,通过安装 FastAPI 和 Uvicorn 并创建简单的“Hello, World!”应用入门;接着展示了如何处理路径参数和查询参数,并利用类型提示进行数据验证和转换。
24 0
|
7天前
|
缓存 API 数据库
打造高性能后端API:从设计到部署的实战之旅
【8月更文挑战第31天】在数字化时代的浪潮中,后端API成为了连接用户、数据与服务的桥梁。本文将带领读者踏上一段从API设计、开发到部署的旅程,通过实际案例分析,揭示如何构建一个高性能的后端系统。我们将探讨现代后端架构的关键要素,包括RESTful API设计原则、数据库优化技巧、缓存策略、以及容器化部署的实践。文章旨在为开发者提供一套实用的方法论,帮助他们在面对复杂业务需求时,能够设计出既高效又可扩展的后端服务。
|
11天前
|
消息中间件 缓存 API
go-zero微服务实战系列(三、API定义和表结构设计)
go-zero微服务实战系列(三、API定义和表结构设计)
下一篇
DDNS