MyEMS开源能源管理系统适用于建筑、工厂、商场、医院、园区的电、水、气等能源数据采集、分析、报表,还有光伏、储能、充电桩、微电网、设备控制、故障诊断、工单管理、人工智能优化等可选功能。资深专业团队开发维护,保障长期支持。用开源助力企业集团、产业园区、能源运营商低碳发展!

本期解读:

组合设备批量分析导出报表方法:myems-api/excelexporters/combinedequipmentbatch.py

源代码链接:https://gitee.com/myems/myems/blob/master/myems-api/excelexporters/combinedequipmentbatch.py?sessionid=261737961

段代码是一个Python脚本,用于生成一个包含特定报告数据的Excel文件,并将该文件编码为Base64格式。整个过程分为三个主要步骤:验证报告数据、生成Excel文件、将Excel文件编码为Base64。下面是对代码的详细解析:

第一步:验证报告数据

  • 检查传入的result参数是否为None。如果是,则函数返回None,表示没有数据可供处理。

第二步:生成Excel文件

  • 使用openpyxl库创建一个新的Excel工作簿,并设置活动工作表的标题为"CombinedEquipmentBatch"。
  • 调整行高和列宽,以及设置字体、边框和填充样式,以美化Excel文件的外观。
  • 在Excel文件中插入一个图片(假设为"myems.png"),并设置标题和报告的时间范围。
  • 根据报告数据(report参数),在Excel中填充数据。这包括设备名称、空间名称和各个能源类别的值。
  • 使用uuid生成一个唯一的文件名,并将工作簿保存为这个文件名的Excel文件。

第三步:将Excel文件编码为Base64

  • 打开刚刚生成的Excel文件,读取其内容。
  • 将文件内容编码为Base64格式,以便可以通过文本方式传输或存储。
  • 删除服务器上的原始Excel文件,以避免占用不必要的空间。
  • 返回Base64编码后的字符串。

代码中的一些关键函数和类

  • openpyxl.Workbook(): 创建一个新的Excel工作簿。
  • openpyxl.drawing.image.Image: 在Excel工作簿中插入图片。
  • openpyxl.styles: 设置单元格的字体、边框、对齐方式和填充样式。
  • base64.b64encode(): 将二进制数据编码为Base64格式。

MyEMS开源能源管理系统核心代码解读017的更多相关文章

  1. 优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案

    简介 本篇为大家介绍一个优秀的开源小项目:WebViewJavascriptBridge. 它优雅地实现了在使用UIWebView时JS与ios 的ObjC nativecode之间的互调,支持消息发 ...

  2. Hybrid----优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案-备

    本篇为大家介绍一个优秀的开源小项目:WebViewJavascriptBridge. 它优雅地实现了在使用UIWebView时JS与ios 的ObjC nativecode之间的互调,支持消息发送.接 ...

  3. itest 开源测试管理项目中封装的下拉列表小组件:实现下拉列表使用者前后端0行代码

    导读: 主要从4个方面来阐述,1:背景:2:思路:3:代码实现:4:使用 一:封装背景       像easy ui 之类的纯前端组件,也有下拉列表组件,但是使用的时候,每个下拉列表,要配一个URL ...

  4. 腾讯开源的 Paxos库 PhxPaxos 代码解读---Accept阶段(一)

    腾讯开源的 Paxos库 PhxPaxos 代码解读---Accept阶段(一) 在看Accept阶段代码之前, 我们再回想一下 Basic Paxos算法; 1.  Basic Paxos 算法是为 ...

  5. Android MVP模式 谷歌官方代码解读

    Google官方MVP Sample代码解读 关于Android程序的构架, 当前(2016.10)最流行的模式即为MVP模式, Google官方提供了Sample代码来展示这种模式的用法. Repo ...

  6. msysGit管理GitHub代码

    msysGit管理GitHub代码   代码的管理,在日常开发中是很重要的环节,程序员的修炼三部曲——版本控制,单元测试,项目自动化. 本篇就简单的说说通过msysGit来管理GitHub中的代码,实 ...

  7. C/C++ 开源库及示例代码

    C/C++ 开源库及示例代码 Table of Contents 说明 1 综合性的库 2 数据结构 & 算法 2.1 容器 2.1.1 标准容器 2.1.2 Lockfree 的容器 2.1 ...

  8. Google免费的SVN服务器管理VS2010代码

    原文:Google免费的SVN服务器管理VS2010代码 前言 Google免费为我们提供了代码管理的SVN服务器.首先我这里用的Win7 64的电脑系统,用VS2010进行的代码开发.这里管理代码需 ...

  9. spring JdbcTemplate 在itest 开源测试管理项目中的浅层(5个使用场景)封装

    导读: 主要从4个方面来阐述,1:背景:2:思路:3:代码实现:4:使用 一:封装背景, 在做项目的时候,用的JPA ,有些复杂查询,比如报表用原生的JdbcTemplate ,很不方便;传参也不方便 ...

  10. weex官方demo weex-hackernews代码解读(上)

    一.介绍 weex 是阿里出品的一个类似RN的框架,可以使用前端技术来开发移动应用,实现一份代码支持H5,IOS和Android.最新版本的weex已默认将vue.js作为前端框架,而weex-hac ...

随机推荐

  1. odoo15里面密码与附件加密方式

    一.odoo里面用户设置的密码加密方式 加密是用[Passlib生成的PBKDF2 SHA512哈希] 加密后位数是128位 ` def _set_password(self): ctx = self ...

  2. Django REST Framework框架介绍以及简单使用

    一. Django REST framework介绍 Django REST framework是基于Django实现的一个RESTful风格API框架,能够帮助我们快速开发RESTful风格的API ...

  3. 现在的AI工具还能写剧本杀了?

    本文由 ChatMoney团队出品 近年来,剧本杀作为一种新兴社交游戏,收到了越来越多人的喜爱,它不仅需要玩家们发挥自身演技,还需运用逻辑思维推理,分析所获得的线索,找出案件真凶.然而你是否想过,你在 ...

  4. 壹伴助手_秀米编辑器官网_微信公众号图文编辑和H5制作- 秀米XIUMI

    壹伴助手:公众号编辑器的首选工具 壹伴是一款比秀米更加优秀的公众号编辑器工具,作为第一名推荐,是所有公众号小编的首要选择. 在新时代的自媒体运营中,排版不仅是一项技能,更是一种艺术.无论是文字的优美书 ...

  5. 从 DeepSeek 突然爆发,看数据开发的应用市场

    在数字化快速发展的当下,人工智能与数据技术不断迭代.近期,DeepSeek 凭借自身技术实力在市场中迅速崛起,为剖析数据开发应用市场提供了视角. DeepSeek 爆发:技术与市场的双重驱动 1.1 ...

  6. ChunJun 1.16 Release版本即将发布,bug 捉虫活动邀您参与!

    亲爱的社区小伙伴们,历时数月,我们很高兴地宣布,ChunJun 即将迎来 1.16 Release 版本的正式发布.在新版本中,ChunJun 新增了一批常用功能,进行了多项功能优化和问题修复,并在用 ...

  7. 痞子衡嵌入式:在MDK5.40开发环境下添加用户下载算法FLM文件的方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在MDK5.40开发环境下添加用户下载算法FLM文件的方法. 最近痞子衡给一个 RT1170 客户制作了一个 SEGGER 下载算法,在 ...

  8. CF1929D Sasha and a Walk in the City 题解

    CF1929D Sasha and a Walk in the City 简单树形动态规划. 我们把选取到的点称为黑点,由题意得,一个合法的点集能使树中任意一条简单路径上的黑点数量不超过两个.也就是说 ...

  9. linux操作系统下C语言编程入门小结

    Makefile $@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件.# 这是简化后的 Makefilemain:main.o mytool1.o mytool2.ogcc -o ...

  10. C++ 类模板 模板类 。。。

    ## 转载: [CSDN](http://blog.csdn.net/sunxx1986/article/details/6619144) 最后提醒:在本文的几个术语中,语言的重心在后面,前面的词是作 ...