《超简单:用 Python 让 Excel 飞起来》读书笔记:第9章 导读 在 Excel 中调用 Python 代码

发布时间:2026/11/5 18:14:55

《超简单:用 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 自定义函数一样被调用。返回顶部
延伸阅读

更多相关文章

2026/10/31 3:48:56

Restoring Pruned Large Language Models via Lost Component Compensation

文章核心内容总结 该研究针对大语言模型(LLMs)剪枝后性能下降的问题,提出了一种名为RestoreLCC的目标恢复策略。核心思路是通过捕捉剪枝过程中丢失的关键信息并补偿回模型,在不牺牲剪枝模型稀疏性和推理效率的前提下,恢复其性能。研究验证了剪枝导致的信息损失会体现在注…

2026/11/2 11:59:24

【Atlas】 Atlas 在高并发写入场景下如何避免消息积压?

Apache Atlas 高并发写入场景下的消息积压根治方案:从 Kafka 到 HBase 的全链路调优 用户问题原文:“114. Atlas 在高并发写入场景下如何避免消息积压?” 本文将面向具备 8 年以上大数据开发经验的工程师,深入剖析 Apache Atlas 2…

2026/11/5 16:51:33

EasyU优启通PE维护盘实战指南:制作、启动与核心操作全解析

1. 为什么一个PE维护盘值得单独拿出来聊装系统、修引导、救数据、清病毒,这些活儿但凡干过几次的人都知道,真正决定效率的往往不是你手速多快,而是手边那套PE环境靠不靠谱。EasyU(圈内习惯叫优启通)就是在这个场景下被…

2026/11/5 16:26:13

Rust原来很简单二:所有权系统

Part 2 核心篇 —— 所有权系统 本篇覆盖 第 6 ~ 10 章:所有权、借用与引用、生命周期、字符串与切片、内存模型。 ⚠️ 这是全书最重要的一篇。 把它吃透,Rust 从此“很简单”;跳过它,你会处处碰壁。请慢下来,动手敲每一段代码。 第 6 章 所有权:Rust 的第一性原理 6…

2026/11/5 15:00:49

基于Hadoop+Spark的民宿智能推荐系统设计与实现

1. 项目概述:大数据时代的民宿智能推荐这个毕业设计项目融合了当前大数据领域最主流的技术栈,构建了一个完整的民宿推荐系统解决方案。作为一名长期从事大数据系统开发的工程师,我认为这个选题非常贴合实际应用场景——随着旅游业的复苏和共享…

2026/11/5 14:10:30

ADS122U04IPWR+STM32F427ZI工业级温度测量信号链设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 14:10:30

UART接口24位ADC搭配RS485,解决远距离温度监控难题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 14:10:30

UART接口24位ADC搭配PIC18F46K22的RTD与热电偶测温实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 15:39:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 0:02:07

多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中…

2026/11/5 0:02:07

大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#…

2026/11/5 0:02:07

鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的…

2026/11/5 15:39:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑