背景
在 Excel 中,数字就是数字,文本就是文本,二者泾渭分明,但单元格本身从不强调"我装的是什么类型"。一个单元格里写 123,Excel 知道它是数值;以单引号开头输入 '123,Excel 知道它是文本。视觉上看起来一样,行为却截然不同。
进入 Python 之后,这个差异被无限放大。Python 是一个强类型语言------每个值都有明确的类型归属,数字、文字、逻辑、空值等,都分得清清楚楚。一旦开始用 Python 处理 Excel 数据,最先遇到的"墙",往往就是理解数据类型转换。
核心概念:Python 的五种基础类型
Python 处理数据时,最常用的"原材料"有五种:
| 类型 | 名称 | 典型例子 | 在 Excel 中的对应 |
|---|---|---|---|
int |
整数 | 42、-7、0 |
单元格里不带小数的数值 |
float |
浮点数 | 3.14、-0.5 |
单元格里的带小数数值 |
str |
字符串 | 苹果、'2023 |
文本格式或被引号包裹的内容 |
bool |
布尔值 | True、False |
公式中的 TRUE/FALSE |
NoneType |
空值 | None |
空单元格 |
理解这张表,相当于拿到了 Python 世界的"元素周期表"。
数据流:Excel 单元格 → Python 值
xl() 把 Excel 数据读入 Python 时,会按一定规则给每个值打上"类型标签":
- 单元格是数字 → 整数就是
int,带小数的就是float - 单元格是文本 → 无论内容是
abc还是'123,统统变成str - 单元格是空白 → 变成
None(不是空字符串,也不是 0) - 单元格是
TRUE/FALSE→ 变成True/False,类型为bool
核心函数:type()------类型的"照妖镜"
刚接触 Python 时,最值得养成的一个习惯:不确定类型,先用 type() 看一眼。
type() 是 Python 内置的类型检测函数,把任意值传给它,它就告诉你这个值的"类别身份证":
=PY(type(xl("A1")).__name__)
注意:type()返回的是一个 type 对象(例如 <class 'str'>),单元格默认显示完整的 type 文本。如果希望只看到类型名称(如 str、int),可以用 type(xl("A1")).__name__。

注意事项
1. Excel 的数字格式 ≠ Python 的类型
在 Excel 里把单元格格式设置为"货币"、"百分比"、"千分位",只是改变了 Excel 中在单元格内的显示形式,Python 看到的依然是底层数值。
2. 看似数字的文本是常见陷阱
如果某个单元格里存的是以单引号开头的 '150(显示为 150,被 Excel 识别为文本格式),xl() 会返回字符串,而不是整数 150。此时进行数学运算,例如加法 xl("A3") + 1 会报错。
3. 空单元格不是 0,也不是空字符串
很多人以为空单元格到了 Python 会变成 0 或 "",实际是 None。这是 Python 独有的"空"------表示"这里没有值"。
总结
以上是 Python 数据类型的基础面貌:五种类型构成数据世界的全部,xl() 把 Excel 数据按规则翻译成 Python 值,type() 是日常调试的好帮手。把这些概念记住,后续无论做加减乘除、数据筛选还是画图,都会顺畅很多。