MyEMS开源能源管理系统核心代码解读017
MyEMS开源能源管理系统适用于建筑、工厂、商场、医院、园区的电、水、气等能源数据采集、分析、报表,还有光伏、储能、充电桩、微电网、设备控制、故障诊断、工单管理、人工智能优化等可选功能。资深专业团队开发维护,保障长期支持。用开源助力企业集团、产业园区、能源运营商低碳发展!
本期解读:
组合设备批量分析导出报表方法:myems-api/excelexporters/combinedequipmentbatch.py
段代码是一个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的更多相关文章
- 优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案
简介 本篇为大家介绍一个优秀的开源小项目:WebViewJavascriptBridge. 它优雅地实现了在使用UIWebView时JS与ios 的ObjC nativecode之间的互调,支持消息发 ...
- Hybrid----优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案-备
本篇为大家介绍一个优秀的开源小项目:WebViewJavascriptBridge. 它优雅地实现了在使用UIWebView时JS与ios 的ObjC nativecode之间的互调,支持消息发送.接 ...
- itest 开源测试管理项目中封装的下拉列表小组件:实现下拉列表使用者前后端0行代码
导读: 主要从4个方面来阐述,1:背景:2:思路:3:代码实现:4:使用 一:封装背景 像easy ui 之类的纯前端组件,也有下拉列表组件,但是使用的时候,每个下拉列表,要配一个URL ...
- 腾讯开源的 Paxos库 PhxPaxos 代码解读---Accept阶段(一)
腾讯开源的 Paxos库 PhxPaxos 代码解读---Accept阶段(一) 在看Accept阶段代码之前, 我们再回想一下 Basic Paxos算法; 1. Basic Paxos 算法是为 ...
- Android MVP模式 谷歌官方代码解读
Google官方MVP Sample代码解读 关于Android程序的构架, 当前(2016.10)最流行的模式即为MVP模式, Google官方提供了Sample代码来展示这种模式的用法. Repo ...
- msysGit管理GitHub代码
msysGit管理GitHub代码 代码的管理,在日常开发中是很重要的环节,程序员的修炼三部曲——版本控制,单元测试,项目自动化. 本篇就简单的说说通过msysGit来管理GitHub中的代码,实 ...
- C/C++ 开源库及示例代码
C/C++ 开源库及示例代码 Table of Contents 说明 1 综合性的库 2 数据结构 & 算法 2.1 容器 2.1.1 标准容器 2.1.2 Lockfree 的容器 2.1 ...
- Google免费的SVN服务器管理VS2010代码
原文:Google免费的SVN服务器管理VS2010代码 前言 Google免费为我们提供了代码管理的SVN服务器.首先我这里用的Win7 64的电脑系统,用VS2010进行的代码开发.这里管理代码需 ...
- spring JdbcTemplate 在itest 开源测试管理项目中的浅层(5个使用场景)封装
导读: 主要从4个方面来阐述,1:背景:2:思路:3:代码实现:4:使用 一:封装背景, 在做项目的时候,用的JPA ,有些复杂查询,比如报表用原生的JdbcTemplate ,很不方便;传参也不方便 ...
- weex官方demo weex-hackernews代码解读(上)
一.介绍 weex 是阿里出品的一个类似RN的框架,可以使用前端技术来开发移动应用,实现一份代码支持H5,IOS和Android.最新版本的weex已默认将vue.js作为前端框架,而weex-hac ...
随机推荐
- 一定要看到花开-M1下的环境噩梦
一定要看到花开-M1下的环境噩梦 人有时候就是喜欢犯贱. 关注我这快小一年的扯闲天的都知道,自己也算是经历了一劫吧.虽然,这劫难还不能说结束,但也算是走出来了. 一切,似乎正在朝着好的方向发展. 但是 ...
- CF1983E I Love Balls
Problem - E - Codeforces 爱丽丝和鲍勃玩摸球游戏.有 \(n\) 个球,其中 \(k\) 个是特殊球.每个球都有其价值. 他们轮流且不放回地摸球,每回合随机摸一个球并获得该球的 ...
- CSP-S 2020模拟训练题1-信友队T2 挑战NPC
题意简述 有一个\(k\)维空间,每维的跨度为\(L\),即每一维的坐标只能是\(0,1, \cdots ,L-1\).每一步你可以移动到任意一个曼哈顿距离到自己小于等于\(d\)的任意一个合法坐标. ...
- 「Log」做题记录 2023.8.28-2023.9.24
\(2023.8.28-2023.9.3\) \(\color{blueviolet}{P3704}\) 莫反. \(\color{limegreen}{P8773}\) ST 表. \(\color ...
- 数据湖选型指南|Hudi vs Iceberg 数据更新能力深度对比
数据湖作为新一代大数据基础设施,近年来持续火热,许多前线的同学都在讨论数据湖应该怎么建,许多企业也都在构建或者计划构建自己的数据湖.基于此,自然引发了许多关于数据湖选型的讨论和探究.但是经过搜索之后我 ...
- C++使用WinHTTP访问http/https服务
环境: window10_x64 & vs2022 python版本: 3.9.13 日常开发中,会遇到c/c++作为客户端访问http/https服务的情况,今天整理下windows10环境 ...
- 【8*】动态DP学习笔记
前言 WC 2024 的知识点,补个档.寒假时间紧促,这篇博客是边学边写的. 此类知识点大纲中并未涉及,所以[8]是我自己的估计,后带星号表示估计,仅供参考. 动态 DP 动态 DP 用于解决需要求出 ...
- virtual studio 插入 函数注释头 snippet方式
简介 以前通过一个插件就可以管理所有的函数,也可以通过snippet插入 参考链接 如何使用snippet https://blog.csdn.net/weixin_30278237/article/ ...
- opengl 学习 之 08 lesson
opengl 学习 之 08 lesson 简介 基础的光照渲染.漫反射,镜面反射,环境光. 光的主要计算在GLSL里面的碎片着色器中编写. link http://www.opengl-tutori ...
- Codigger之配置LunarVim
Lunarvim是一款先进的集成开发环境(IDE),构建于Neovim之上,致力于为用户提供一个高效且个性化的编程平台.该环境融合了Neovim的核心优势,并增添了多项扩展功能,以支持诸如代码高亮.自 ...