《超简单:用 Python 让 Excel 飞起来》读书笔记:第9章 导读 在 Excel 中调用 Python 代码 个人主页杨利杰YJlio❄️个人专栏《Sysinternals实战教程》 《Windows PowerShell 实战》 《WINDOWS教程》 《IOS教程》《微信助手》 《锤子助手》 《Python》 《Kali Linux》《那些年未解决的Windows疑难杂症》让复杂的事情更简单让重复的工作自动化《超简单用 Python 让 Excel 飞起来》读书笔记第9章 导读 在 Excel 中调用 Python 代码1. 第9章导读为什么要在 Excel 中调用 Python2. xlwings 是什么Excel 和 Python 之间的桥3. 前置准备先确认 Python 环境可用4. 在 Excel 中加载 xlwings 插件4.1 方式一命令行安装插件4.2 方式二手动加载插件5. 验证 Excel 与 Python 是否真正打通6. 常见问题与排查思路6.1 Excel 里没有 xlwings 选项卡6.2 报错 No module named xlwings6.3 宏被禁用按钮无法运行6.4 脚本能在命令行运行但 Excel 调用失败7. 一个最小可用示例从 Excel 调用 Python8. 我的总结提升1. 第9章导读为什么要在 Excel 中调用 PythonV4修正版进度标记本篇为 07月14日 第2篇继续整理《超简单用 Python 让 Excel 飞起来》读书笔记系列。这一篇主要讲第9章的导读内容如何在 Excel 中调用 Python 代码。这不是简单地“会不会写 Python”的问题而是把 Excel 的表格展示能力和 Python 的自动化处理能力连接起来。Excel 很适合做数据录入、结果展示、人工核对和报表交付但一旦遇到复杂逻辑、批量文件处理、接口调用、自动化分析单靠公式和 VBA 就会明显吃力。这个时候Python 的价值就出来了。我的理解是Excel 负责展示与交付Python 负责逻辑与自动化。这张图展示了“在 Excel 中调用 Python”的整体思路左侧是 Excel 表格右侧是 Python 代码中间通过自动化链路把数据处理、分析建模、结果输出连接起来。从这张图中我们可以看出本文不是单纯介绍一个 Python 库而是在讲一种办公自动化工作流让 Excel 不再只是手工表格而是可以调用 Python 能力的前端入口。注意本文讲的是通过 xlwings 让桌面版 Excel 与本机 Python 环境联动不等同于 Microsoft 365 中的云端 Python in Excel 功能。二者名字相似但使用方式、运行环境和部署逻辑都不一样。2. xlwings 是什么Excel 和 Python 之间的桥xlwings 可以理解成 Excel 和 Python 之间的“桥”。它既可以让 Python 控制 Excel也可以让 Excel 调用 Python。对办公自动化来说这个能力很关键因为很多时候最终交付物仍然是 Excel 文件但中间的数据处理逻辑更适合交给 Python。xlwings 常见使用方式主要有三类Python 控制 Excel读取单元格、写入数据、操作工作表、插入图片、保存工作簿Excel 调用 Python通过按钮、宏或 Run Python 调用 Python 脚本Excel 使用 Python 自定义函数把 Python 函数导入 Excel像公式一样调用。这张图展示了 xlwings 的核心定位它不是替代 Excel也不是替代 Python而是把两者连接起来。从这张图中我们可以看出左边是 Excel 数据表右边是 Python 脚本中间的 xlwings 起到桥接作用。这也解释了为什么第9章会把“在 Excel 中调用 Python”单独拿出来讲它已经不是单个脚本技巧而是 Excel 自动化能力的扩展入口。我个人更建议先把 xlwings 理解成“连接层”不要一上来就纠结 UDF、自定义函数、插件机制这些术语。先弄清楚一件事Excel 里的数据可以交给 Python 处理Python 的结果也可以回写到 Excel。3. 前置准备先确认 Python 环境可用在 Excel 中调用 Python 之前第一件事不是打开 Excel而是确认本机 Python 环境是通的。这个顺序不能反。很多人加载 xlwings 失败本质上不是 Excel 的问题而是 Python、pip、包路径或环境变量没有打通。如果 Python 环境本身不可用后面加载插件、运行脚本、调用模块都会跟着出问题。建议先在命令行执行下面几条命令python--versionpip--version确认 Python 和 pip 都能正常输出版本号后再安装 xlwingspipinstallxlwings安装完成后继续验证 Python 是否真的能导入 xlwingspython-cimport xlwings as xw; print(xw.__version__)如果可以输出版本号说明 Python 侧已经基本准备好。这张图展示了安装 xlwings 前后需要确认的 Python 环境链路包括 Python 版本、pip 状态、安装命令和安装成功提示。这一步的核心要点是先确认 Python 环境正常再去处理 Excel 插件加载。如果你电脑里存在多个 Python 版本尤其是 Anaconda、微软商店 Python、系统 Python 混在一起时一定要确认当前 pip 安装到的是你真正要用的 Python 环境。我在实际处理环境问题时会优先执行下面这条命令确认模块路径python-cimport sys; print(sys.executable)它会告诉你当前命令行正在使用哪个 Python。这个信息非常关键因为 Excel 后续调用 Python 时也需要指向正确的解释器。4. 在 Excel 中加载 xlwings 插件Python 侧准备好之后下一步才是在 Excel 中加载 xlwings 插件。插件加载成功后Excel 顶部功能区会出现一个 xlwings 选项卡。这个选项卡通常包含 Run Python、Import Functions、Show Console、Add Book 等按钮。这里有两种方式一种是命令安装另一种是手动加载。个人建议优先使用命令安装因为路径和注册过程更省事。4.1 方式一命令行安装插件执行xlwings addininstall如果系统提示找不到xlwings命令可以换成下面这种方式python-mxlwings addininstall执行完成后建议关闭所有 Excel 窗口再重新打开 Excel。成功标志Excel 功能区出现 xlwings 选项卡。4.2 方式二手动加载插件如果企业电脑策略比较严格命令安装失败可以尝试手动加载打开 Excel点击文件进入选项选择加载项底部“管理”选择Excel 加载项点击转到点击浏览找到xlwings.xlam勾选后确认。常见路径可能在C:\Users\用户名\AppData\Roaming\Microsoft\AddIns\xlwings.xlam这张图展示了 xlwings 插件加载后的 Excel 功能区效果并把“命令安装”和“手动加载”两种方式放在一起对比。从这张图中我们可以看出插件加载成功后Excel 中会出现 xlwings 选项卡并且可以看到 Run Python、Show Console、Import Modules 等功能按钮。这一步只是说明 Excel 已经具备调用 xlwings 的入口并不代表你的脚本一定能运行成功。这里最容易犯的错误是看到 xlwings 选项卡就认为环境完全正常。实际上插件显示只是第一层验证后面还要继续验证 Excel 能不能真正调用 Python。5. 验证 Excel 与 Python 是否真正打通我不建议只靠“功能区出现 xlwings”来判断成功。更可靠的方式是用 quickstart 生成一个官方示例项目从 Excel 调用 Python 跑一遍。能跑通才说明链路基本正常。执行xlwings quickstart myproject如果xlwings命令无法识别也可以尝试python-mxlwings quickstart myproject生成后通常会出现两个核心文件myproject.xlsm myproject.py打开myproject.xlsm后可以尝试点击 xlwings 相关按钮运行示例脚本。能成功返回结果就说明 Excel 与 Python 的调用链路已经打通。这张图展示了验证流程先确认 xlwings 选项卡加载再打开 quickstart 模板最后通过运行结果确认 Excel 与 Python 已经连通。这一步的核心要点是不要只验证“装没装上”还要验证“能不能运行”。插件、Python 包、宏设置、路径配置任何一个环节不对都可能导致最终调用失败。我建议把验证动作拆成下面这条链路是否确认 Python 可用安装 xlwings 包加载 Excel 插件打开 quickstart 示例运行 Python 示例代码是否成功返回结果Excel 与 Python 调用链路打通检查 Python 路径、宏设置、加载项状态、报错信息6. 常见问题与排查思路xlwings 的问题表面看是“Excel 调不动 Python”但底层可能分布在多个位置Python 环境、pip 安装路径、Excel 加载项、宏安全策略、文件路径、脚本权限。排查时不要只盯着一个点。6.1 Excel 里没有 xlwings 选项卡优先检查Excel 是否完全重启加载项是否被禁用xlwings addin install是否执行成功是否安装到了当前用户目录企业安全策略是否阻止加载项。可以进入文件 → 选项 → 加载项 → 已禁用项目看看 xlwings 是否被 Excel 禁用了。6.2 报错 No module named xlwings这个错误通常说明Excel 调用的 Python 环境里没有安装 xlwings。处理思路python-cimport sys; print(sys.executable)然后对这个 Python 环境重新安装pipinstallxlwings如果你使用的是 Anaconda需要确认 Excel 指向的是 Anaconda 的 Python还是系统 Python。6.3 宏被禁用按钮无法运行xlwings 很多场景依赖 Excel 宏能力所以企业电脑可能会被宏安全策略拦住。可以检查文件 → 选项 → 信任中心 → 信任中心设置 → 宏设置企业环境中不要随便降低宏安全级别。如果是公司电脑建议按公司 IT 安全要求处理必要时让管理员确认信任位置、加载项策略和宏策略。6.4 脚本能在命令行运行但 Excel 调用失败这种情况很常见通常说明命令行 Python 和 Excel 配置的 Python 不是同一个。排查点xlwings Settings 中的 Python Interpreter当前工作簿路径.py文件是否和.xlsm文件在预期目录脚本是否依赖相对路径是否缺少第三方库。我个人处理这类问题时会先把路径全部改成绝对路径验证等链路跑通后再优化成相对路径。7. 一个最小可用示例从 Excel 调用 Python下面给一个非常简单的思路Excel 文件负责作为入口Python 脚本负责写入一个结果。这个示例不是为了复杂功能而是为了验证“Excel → Python → Excel”链路。Python 脚本示例importxlwingsasxwdefmain():wbxw.Book.caller()shtwb.sheets[0]sht.range(A1).valueExcel 已成功调用 Pythonsht.range(A2).value这说明 xlwings 基础链路已经打通if__name____main__:xw.Book(myproject.xlsm).set_mock_caller()main()这段代码的关键在于 xw.Book.caller()。当它由 Excel 调用时可以拿到当前调用它的工作簿对象然后继续操作工作表。如果 A1、A2 能被成功写入内容说明最基础的调用链路已经通了。真实工作中你可以在这个基础上继续扩展比如读取 Excel 中的输入参数、用 pandas 处理数据、生成图表、写回汇总结果等。8. 我的总结提升这一节的重点不是记住几条命令而是建立一个清晰的判断链路Python 环境是否正常、xlwings 包是否可导入、Excel 插件是否已加载、quickstart 示例是否能跑通。我建议按下面这个顺序处理不要跳步先确认 Python 和 pip再安装 xlwings再加载 Excel 插件再用 quickstart 做验证最后再写自己的业务脚本。如果跳过验证直接写复杂脚本后面报错时你很难判断到底是业务代码错了还是环境链路本身没打通。这也是我写自动化脚本时很重视的一点先建立最小可运行闭环再逐步叠加业务逻辑。不要一开始就把数据处理、文件读写、图表输出、Excel 调用全部混在一起。一句话总结加载 xlwings 插件是让 Excel 连接 Python 的第一步quickstart 验证成功才说明这条链路真正可用。下一节就可以继续深入如何把 Python 函数导入 Excel让它像 Excel 自定义函数一样被调用。返回顶部