当前位置: 首页 > news >正文

如何用python计算销量(openpyxl模块的实际应用)

“火龙果可乐”哪个月份的销售额最高?
前面的课程中,我们已经掌握了计算单月“火龙果可乐”销售额的方法。
要计算多个月份的“火龙果可乐”销售额,只需把计算单月金额的代码重复执行多次即可。
要让代码重复执行多次,一种方法,是可以把这段代码复制粘贴多次。

代码如下:

# 导入openpyxl模块

import openpyxl

# 将以下所有代码复制粘贴12次,计算每个月的“火龙果可乐”的销售额

wb = openpyxl.load_workbook("2019年1月销售订单.xlsx", data_only=True)

# 通过工作簿对象wb获取名为“销售订单数据”的工作表对象,并赋值给变量orderSheet

orderSheet = wb["销售订单数据"]

# 定义一个变量colaSold用来表示本月“火龙果可乐”的销售金额

colaSold = 0

# 遍历工作表的所有行数据

for rowData in orderSheet.rows:

    # 商品名C列是第3列,索引也就是2

    productName = rowData[2].value

    # 获取订单总价I列的索引和总价

    priceIndex = openpyxl.utils.cell.column_index_from_string("I") - 1

    price = rowData[priceIndex].value

   

    # 判断如果productName是“火龙果可乐”

    if productName == "火龙果可乐":

        # 逐个添加总价到本月销售额(colaSold)里

        colaSold = colaSold + price

# 打印出本月销售额,格式为:2019年1月火龙果可乐销售额为{销售总额}元

print(f"2019年1月火龙果可乐销售额为{colaSold}元")

代码逐步解析

下面是对给定代码的逐步解析,解释每个部分的功能以及如何计算每个月的“火龙果可乐”销售额。

```python

# 导入openpyxl模块

import openpyxl

这行代码导入了 `openpyxl` 模块,该模块用于读取和写入 Excel 文件(.xlsx 格式)。

```python

# 将以下所有代码复制粘贴12次,计算每个月的“火龙果可乐”的销售额

wb = openpyxl.load_workbook("2019年1月销售订单.xlsx", data_only=True)

这里加载名为 `2019年1月销售订单.xlsx` 的 Excel 文件,并将其保存为工作簿对象 `wb`。`data_only=True` 参数表示只读取公式计算后的值,而不是公式本身。

# 通过工作簿对象wb获取名为“销售订单数据”的工作表对象,并赋值给变量orderSheet

orderSheet = wb["销售订单数据"]

这行代码从工作簿中获取名为“销售订单数据”的工作表,并将其赋值给变量 `orderSheet`,以便后续使用。

# 定义一个变量colaSold用来表示本月“火龙果可乐”的销售金额

colaSold = 0

这行代码初始化一个变量 `colaSold`,用于累计本月“火龙果可乐”的销售额,初始值为 0。

# 遍历工作表的所有行数据

for rowData in orderSheet.rows:

这里使用 `for` 循环遍历工作表中的每一行数据,`rowData` 每次循环代表当前行的所有单元格。

    # 商品名C列是第3列,索引也就是2

    productName = rowData[2].value

```

在这一行中,获取当前行中第 3 列(索引为 2, 因为索引从 0 开始)的值,代表商品名称,并赋值给 `productName` 变量。

```python

    # 获取订单总价I列的索引和总价

    priceIndex = openpyxl.utils.cell.column_index_from_string("I") - 1

    price = rowData[priceIndex].value

```

这两行代码首先使用 `openpyxl.utils.cell.column_index_from_string("I")` 获取第 I 列的索引(9),然后减去 1 得到实际索引(8)。接着,获取当前行中第 I 列的值,即订单总价,并赋值给 `price` 变量。

```python

    # 判断如果productName是“火龙果可乐”

    if productName == "火龙果可乐":

```

此行代码检查 `productName` 是否等于“火龙果可乐”,如果是的话,执行下面的代码块。

```python

        # 逐个添加总价到本月销售额(colaSold)里

        colaSold = colaSold + price

```

如果条件成立,则将当前订单的总价 `price` 加入到 `colaSold` 中,以累计“火龙果可乐”的销售额。

```python

# 打印出本月销售额,格式为:2019年1月火龙果可乐销售额为{销售总额}元

print(f"2019年1月火龙果可乐销售额为{colaSold}元")

```

最后,使用 `print` 函数输出本月“火龙果可乐”的销售总额,格式化为指定的字符串。

### 复制代码以计算每个月的销售额

为了计算每个月的“火龙果可乐”销售额,您可以将上述代码复制并粘贴 12 次,并相应地更改文件名和打印输出的格式。每个月的文件名应当对应于实际文件,例如:

```python

# 2019年1月

# 复制并修改为

wb = openpyxl.load_workbook("2019年2月销售订单.xlsx", data_only=True)

# ...

print(f"2019年2月火龙果可乐销售额为{colaSold}元")

```

以此类推,直到 2019 年 12 月。

### 示例

以下是一个完整的示例,用于计算 2019 年每个月的“火龙果可乐”销售额:

```python

import openpyxl

for month in range(1, 13):  # 1 到 12 月

    # 格式化月份为两位数

    month_str = f"{month:02d}"

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Django 使用Apscheduler执行定时任务
  • 大数据-118 - Flink DataSet 基本介绍 核心特性 创建、转换、输出等
  • 在BrowserStack上进行自动化爬虫测试的终极指南
  • Java项目: 基于SpringBoot+mysql高校心理教育辅导管理系统分前后台(含源码+数据库+开题报告+毕业论文)
  • 关于edge浏览器登陆CSDN安全验证不跳出验证码
  • Linux--基础知识点--0--面试
  • C++11(1)
  • 力扣刷题(4)
  • 日系编曲:日系架子鼓写作思路 支点音符 幽灵音 抢拍(重音移位)半速与倍速
  • Kotlin 范型之协变、逆变、不变
  • Springboot-文件的上传和下载
  • 解析 MySQL 数据库的 Python 接口:`mysqlclient` 与 `django-mysql` 实战指南20240904
  • ArcGIS展线/投线教程
  • idea 编译断点运行 tomcat 10.1.28 源码
  • redis的一些重要的基础知识
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • mockjs让前端开发独立于后端
  • Python学习笔记 字符串拼接
  • 安卓应用性能调试和优化经验分享
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 当SetTimeout遇到了字符串
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 理解在java “”i=i++;”所发生的事情
  • 力扣(LeetCode)357
  • 前端存储 - localStorage
  • 前端面试总结(at, md)
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 深入浅出webpack学习(1)--核心概念
  • 因为阿里,他们成了“杭漂”
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • # include “ “ 和 # include < >两者的区别
  • # SpringBoot 如何让指定的Bean先加载
  • #Linux(权限管理)
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (3)选择元素——(17)练习(Exercises)
  • (阿里云在线播放)基于SpringBoot+Vue前后端分离的在线教育平台项目
  • (待修改)PyG安装步骤
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (强烈推荐)移动端音视频从零到上手(下)
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (一)Dubbo快速入门、介绍、使用
  • (转)Sql Server 保留几位小数的两种做法
  • *算法训练(leetcode)第三十九天 | 115. 不同的子序列、583. 两个字符串的删除操作、72. 编辑距离
  • .naturalWidth 和naturalHeight属性,
  • .net core Swagger 过滤部分Api
  • .NET MVC第五章、模型绑定获取表单数据
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题