前言

Excel 中可以使用 python 算是一个旧闻了,是 python 之父 Guido van Rossum 加入微软的重要产品。刚出来的第一时间我也尝鲜了,最近作图的时候,再次使用了这个功能,感觉非常方便,推荐大家也用一下。
优点:

  1. Python 在云端运行,无需部署环境。
  2. 可以编写脚本来自动化日常的 Excel 任务,如数据整理、图表生成等,提高工作效率。
  3. 快速响应,可视化选择数据,调整原始数据方便,所见即所得,比 jupyter notebook 更丝滑。

缺点:

云端运行的 python,对网速要求高,不方便加载除了标准库以外的第三方库。

好的,那我们就以日常工作中水质折线图为例,探究下 Excel 中使用 python 的魅力。

python Pillow xlwings excel部分区域截图保存文件 python在excel中截图_开发语言

基础条件

支持 python 的 excel 版本。我是用的是 office 365。

Excel 中的 Python 目前为预览版,可能会根据反馈进行更改。若要使用此功能,请加入 Microsoft 365 会员计划,并选择“Beta 版频道”预览体验成员级别。

Excel 中的 Python 包括 anaconda 提供的一些标准 Python 库,用于提高数据分析和数据可视化能力。包括 Matplotlib、NumPy、Pandas、Seaborn、Statsmodels 等。

python Pillow xlwings excel部分区域截图保存文件 python在excel中截图_python_02

数据结构

一组在线水质检测数据,包括水质站点监测值和监测时间。

python Pillow xlwings excel部分区域截图保存文件 python在excel中截图_python_03

操作步骤

一、选择一个空单元格,点击公式-插入 python

python Pillow xlwings excel部分区域截图保存文件 python在excel中截图_折线图_04

二、数据结构预览
单元格输入以下代码

df=xl("A1:G98", headers=True)
df['监测时间'] = pd.to_datetime(df['监测时间'])
# 确保时间列是索引
df.set_index('监测时间', inplace=True)
df.describe()

按快捷键 crtl+enter 得到数据集结果。

python Pillow xlwings excel部分区域截图保存文件 python在excel中截图_excel_05


仔细看下 excel 界面:

1 为代码输入区,可以调整宽度,自带代码高亮和代码提示。

2 为选择输出类型切换,包括值和 python 对象。

3 为结果展示区域,包括图片或者其他信息,图片的话需要调整单元格宽度。

4 为诊断信息,就像 python 的命令结果窗口,会给出成功或者报错信息。

可以说是一个简单的 IDE,五脏俱全。

python Pillow xlwings excel部分区域截图保存文件 python在excel中截图_折线图_06


三、绘图

选择一个较大的区域,最好是合并单元格,点击公式-插入 python。

单元格输入以下代码

import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime
# 解决坐标轴刻度负号乱码
plt.rcParams["font.sans-serif"] = ["Simhei"]  
plt.rcParams["axes.unicode_minus"] = False
# 将监测时间列转换为datetime类型
df=xl("A1:G98", headers=True)
df['监测时间'] = pd.to_datetime(df['监测时间'])
# 确保时间列是索引
df.set_index('监测时间', inplace=True)
# 使用matplotlib绘制折线图
plt.figure(figsize=(10, 7))  # 设置图表大小
for column in df.columns:
    plt.plot(df.index, df[column], label=column)  # 绘制每列的折线图
# 添加标准值线(值为6),蓝色虚线
plt.axhline(6, color='blue', linestyle='--', label='标准值')
plt.title('5月各站点高锰酸盐指数变化趋势图')  # 设置图表标题
# plt.xlabel('监测时间')  # 设置x轴标签
plt.ylabel('监测值:mg/L')  # 设置y轴标签
plt.xticks(rotation=0)  
plt.tight_layout()  # 自动调整子图参数,使之填充整个图像区域
# 修改图例位置
plt.legend(loc='lower left', bbox_to_anchor=(0, -0.15), ncol=len(df.columns), frameon=False)
plt.show()

结果如下:

python Pillow xlwings excel部分区域截图保存文件 python在excel中截图_折线图_07


利用 python 的 matplotlib 库绘图,就是这么丝滑。如果下次需要再次绘图,那么就不需要重复设置了,直接修改数据就好了。发现数据存在异常,修改异常值也是快速更新结果,非常方便。

结束语

这只是 excel 中使用 python 的一个小小示例,相信它能做的还有更多。有点担心 vba 的地位了。

最后,如果这篇文章有帮助到你,记得点赞,关注哦。