python用openyxl库求某一列的最大值和最小值及平均值,并让其在另一个工作簿中的某一个单元格中
时间: 2024-02-12 15:04:56 浏览: 132
好的,这个问题我可以回答。以下是Python代码,使用openpyxl库来处理Excel文件,求某一列的最大值、最小值和平均值,并将结果写入另一个工作簿中的指定单元格。
首先,我们需要导入openpyxl库和相关模块:
```python
import openpyxl
from openpyxl.utils import column_index_from_string, get_column_letter
```
然后,我们需要打开Excel文件和指定的工作簿:
```python
# 打开Excel文件
wb = openpyxl.load_workbook('example.xlsx')
# 选择特定的工作簿
ws = wb['Sheet1']
```
接下来,我们需要确定要处理的数据列和结果写入的单元格。假设我们要处理的数据列是B列,结果要写入到C1单元格:
```python
# 要处理的数据列
col = 'B'
# 结果写入的单元格
result_cell = 'C1'
```
现在,我们可以循环遍历数据列中的所有单元格,计算最大值、最小值和平均值:
```python
# 初始化最大值、最小值和总和
max_value = float('-inf')
min_value = float('inf')
total = 0
count = 0
# 循环遍历数据列中的所有单元格
for cell in ws[col]:
# 获取单元格的值
value = cell.value
# 如果单元格的值是数字
if isinstance(value, (int, float)):
# 更新最大值和最小值
if value > max_value:
max_value = value
if value < min_value:
min_value = value
# 累加总和和计数
total += value
count += 1
```
最后,我们可以计算平均值,并将结果写入到指定的单元格:
```python
# 计算平均值
if count > 0:
avg_value = total / count
else:
avg_value = None
# 将结果写入到指定的单元格
ws_result = wb['Sheet2']
ws_result[result_cell] = avg_value
# 保存Excel文件
wb.save('example.xlsx')
```
完整的代码如下所示:
```python
import openpyxl
from openpyxl.utils import column_index_from_string, get_column_letter
# 打开Excel文件
wb = openpyxl.load_workbook('example.xlsx')
# 选择特定的工作簿
ws = wb['Sheet1']
# 要处理的数据列
col = 'B'
# 结果写入的单元格
result_cell = 'C1'
# 初始化最大值、最小值和总和
max_value = float('-inf')
min_value = float('inf')
total = 0
count = 0
# 循环遍历数据列中的所有单元格
for cell in ws[col]:
# 获取单元格的值
value = cell.value
# 如果单元格的值是数字
if isinstance(value, (int, float)):
# 更新最大值和最小值
if value > max_value:
max_value = value
if value < min_value:
min_value = value
# 累加总和和计数
total += value
count += 1
# 计算平均值
if count > 0:
avg_value = total / count
else:
avg_value = None
# 将结果写入到指定的单元格
ws_result = wb['Sheet2']
ws_result[result_cell] = avg_value
# 保存Excel文件
wb.save('example.xlsx')
```
注意,这里默认Excel文件中有两个工作簿,分别命名为Sheet1和Sheet2,你需要根据实际情况修改代码中的工作簿名称和文件路径。
阅读全文