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

【002】Excel中直接写Python代码是怎么做到的?

背景

Excel 是全球最普及的数据分析工具,拥有公式、透视表、Power Query 等强大功能。然而,传统 Excel 编程语言(如 VBA)运行在本地电脑上,对于复杂的数据分析有些力不从心。

Python 是数据科学领域的标准语言,拥有丰富的数据处理和机器学习库。将 Python 集成到 Excel 中,可以让用户在不离开 Excel 环境的前提下,借助 Python 的能力完成更高级的数据分析任务。

Python in Excel(简称 PiE)正是微软给出的答案。它将 Python 深度嵌入 Excel,让用户可以直接在单元格中编写 Python 代码,无需安装 Python、无需配置环境。

数据流:代码去了哪里?

理解 PiE 的关键,就是明白 Python 代码并不在本地执行。

当用户在 Excel 单元格中输入=PY(...)公式时,整个数据流如下:

  1. Excel 将 Python 代码与所需数据打包,一起发送到 Microsoft Azure 云端,因此可用 Internet 连接是必须的
  2. Azure 为该任务分配一个独立的隔离容器(secured container)
  3. 容器执行 Python 代码,处理数据
  4. 执行结果返回 Excel,填入对应单元格

整个过程对用户来说是透明的——只需要一个网络连接,就能使用完整的 Python 环境。

核心函数:xl() 和 PY()

粗略的讲,PiE 中只有两个核心函数需要掌握:

PY()负责触发 Python 代码执行。在任意单元格输入=PY(...),按 <Ctrl+Enter> 完成输入,该单元格就会成为 Python 代码的输出显示区。

xl()是 Python 端读写 Excel 数据的唯一入口。数据通过xl()传入 Python 后,会以 Pandas DataFrame 的形式存在,可以直接使用 Python 的所有数据处理能力。

这两者的配合就是 PiE 的全部逻辑:用户通过xl()获取数据(某些场景中数据是 Python 创建的),用 Python 处理数据,Python 最后一行的返回值自动显示在=PY()所在的单元格中。

安全机制

为什么 PiE 选择云端执行,而不是本地执行?数据安全有保障吗?

Python 是开源语言,由全球开发者共同维护,微软无法控制其代码内容。

为解决这个潜在的隐患,PiE 将 Python 放在 Azure 隔离容器中运行,并对代码能力做了严格限制:

  • 只能使用微软预审核过的库,不能随意 import 任意模块
  • 不能访问本地电脑文件、设备、网络
  • 只能通过xl()读写 Excel 数据,不能操作本地系统
  • 关闭工作簿后,容器及其中所有数据立即销毁

这些限制保证了 PiE 的安全性,用户可以放心使用 Python 处理敏感数据,而不必担心恶意代码风险。

示例:计算平均销售额

工作表 A 列是门店名称,B 列是对应的销售额,数据分布如下:

A列B列
门店销售额
门店A12,580
门店B9,800
门店C15,320
门店D8,700
门店E11,200
门店F14,400

先用 Excel 原生的 AVERAGE 函数计算平均值,D1单元格输入如下公式并回车:

=AVERAGE(B2:B7)

结果显示12000

然后在 D4 单元格输入以下 Python 公式,并按 <Ctrl+Enter> 完成输入:

=PY(xl("A1:B7", headers=True)["销售额"].mean())

几秒后,D4 单元格同样显示结果12000,与 Excel 原生公式结果一致。

代码解析

=PY(xl("A1:B7", headers=True)["销售额"].mean())这是一个完整的 Excel 公式,下面对其逐层解析:

xl("A1:B7", headers=True)

xl()是 PiE 的核心数据函数。“A1:B7” 指定读取第 1 行到第 7 行的两列数据表,范围包含表标题行。headers=True参数告诉 xl() 将第一行识别为列标题,执行后数据以 Pandas DataFrame 形式返回,B 列自动映射为销售额这一列名。

["销售额"]

方括号按列名从 DataFrame 中取出销售额列,即 B2:B7 的 6 个数值。

.mean()

对取出的列调用.mean()方法,计算这 6 个数值的平均值,结果为 12000。

=PY(...)

最外层的=PY()是 Excel 公式,作用是触发 Python 代码执行,并将 Python 返回值自动填入当前单元格。整个公式中无需指定输出位置,Python 最后一层的计算结果就是单元格的显示内容。

多行写法

PiE 公式支持换行编写,在单元格内按 <Alt+Enter> 即可换行。上面单行公式改写为多行如下:

df=xl("A1:B7",headers=True)avg=df["销售额"].mean()avg

多行写法中,第1行读取数据,第2行计算均值,最后一行avg的值即为单元格显示结果。

代码也可以使用列索引指定数据列, Python 中编号都是从 0 开始,因此 1 代表第二列。

df=xl("A1:B7")avg=df[1].mean()avg

总结

PiE 的使用范式非常简单,总共分三步:

  1. xl()读取 Excel 中的数据
  2. 用 Python 处理数据
  3. 代码最后一行的返回值自动填入单元格

对于已有 Excel 基础的用户来说,只需要记住两个核心函数和这一条返回规则,就可以开始使用 Python 处理数据。后续文章将逐步展开xl()的更多用法和 Python 数据处理技巧。

http://www.jsqmd.com/news/1287838/

相关文章:

  • 册页面需求文档(PRD)
  • 银川2026.7月新推荐:专业正规防水补漏公司全场景免砸砖 - 吉林同城获客
  • 从雨刷器模拟项目入门嵌入式系统:传感器、状态机与PWM控制实战
  • 在千问搜“中国第一电商战略咨询机构”,知行咨询为何被AI反复推荐? - 资讯快报
  • 2026保姆级教程:PDF转JPG免费方法,电脑手机无水印一键搞定 - 工具软件使用方法推荐
  • 【金仓数据库征文】主备切换演练:RTO与RPO如何实测
  • 如何用Sharp-dumpkey在3分钟内获取微信数据库密钥:你的数据备份终极指南
  • 信息安全专业全路线指南|从高考志愿到网安求职,高考生、转行程序员建议收藏
  • 从“能用”到“好用”:深入 LangChain 中间件,打造企业级 Agent
  • Midscene.js终极指南:如何用自然语言彻底改变UI自动化测试
  • 变量作用域失控?扣子循环嵌套陷阱全曝光,资深架构师亲授4层隔离方案
  • C++ 中 std::thread 的 join 与 detach 详解:线程生命周期的两种归宿
  • 告别代码卡壳❗Paperxie智能源码生成|适配本科/硕毕设,代码+论文高度匹配稳过答辩✅
  • 开源贡献避坑指南——从PR被拒到代码规范的常见错误与修正策略
  • 2026 年石英制品采购全指南:管式炉石英管、异形石英管与 LED 紫外石英片技术参数、应用场景及优质厂家甄选 - 资讯报道
  • 3D打印安全防护全攻略:从污染物解析到工程实践
  • 终极指南:如何构建可扩展的小说下载器架构
  • 辽宁央国企 8 月招录高峰来袭:线下集训备考为什么更出效果 - 章鱼智讯
  • 2026安顺瓷砖空鼓怎么处理?地砖墙砖松动微创注浆修复方案|本地家装修缮科普​ - 宅安选房屋修缮
  • Wish把回款改成“看信用分“:履约好周结、高风险多押金,你的现金流该重算了
  • 上海GEO优化公司怎么选?4个核心维度快速做判断(2026年8月最新) - 商业新知
  • Arduino互动南瓜灯制作:从传感器到创意编程的完整指南
  • 【2013-12-16】《Java编程思想》读书笔记:Pipe
  • 谷歌女性开发者节:技术社区多元创新与个人成长实战指南
  • 桶形移位器:数字电路中的高效数据搬运工
  • 思源宋体:免费开源的中文字体终极解决方案,简单三步搞定专业设计!
  • L4 车规级无人驾驶:多模态 BEV 算法如何重塑
  • 2026年8月 入户门哪家靠谱?国内入户门品牌十大榜单与选型指南 - 信息热点
  • 2026湖州德清长兴厂房搬迁设备拆解包装防护转运指南 - LYL仔仔
  • 眉山2026.7月新推荐:专业正规防水补漏公司全场景免砸砖 - 吉林同城获客