0Pricing
Python Academy · 课时

读取工作簿

打开并读取 Excel 文件

读取工作簿 是 CoddyKit 上的免费 Python Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Python Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Python Academy 课程共包含 4 节课。

使用 Python 操作 Excel

openpyxl 是用于读取和写入现代 Excel 文件(.xlsx 格式)的标准库。它可以让 Python 自动执行原本需要手动完成的电子表格任务。

本课将重点介绍如何打开文件以及读取其中的内容。

工作簿模型

Excel 文件具有清晰的层次结构,openpyxl 对此进行了对应:

  • 工作簿 整个文件
  • 工作表 文件中的一个选项卡
  • 单元格 一个带有值的 A1 样式方框

您可以依次从工作簿导航到工作表,再导航到单元格。

打开文件

load_workbook('data.xlsx') 会读取文件并返回一个工作簿。对于只需读取的大型文件,请传入 read_only=True,以流式方式读取行并节省内存。

使用 data_only=True 可以读取公式单元格最后一次计算出的结果,而不是公式文本。

选择工作表

wb.active 会返回当前选中的工作表。wb['Sheet1'] 按名称选择工作表,而 wb.sheetnames 会列出所有选项卡。选择正确的工作表是任何读取操作的第一步。

sheetnames = ['Summary', 'Q1', 'Q2', 'Q3']
wanted = 'Q2'
if wanted in sheetnames:
    print('Selecting sheet:', wanted)
else:
    print('Not found, defaulting to', sheetnames[0])

读取单个单元格

您可以通过 Excel 地址访问单元格:ws['A1'].value;也可以使用数字访问:ws.cell(row=1, column=1).value。.value 属性保存实际数据,数据可能是文本、数字、日期或 None。

列字母与数字

Excel 列使用字母表示(A、B、...、Z、AA),但 openpyxl 也使用从 1 开始的数字。有时需要在两者之间进行转换。下面是根据字母获取列号的方法。

def col_to_num(letters):
    num = 0
    for ch in letters.upper():
        num = num * 26 + (ord(ch) - ord('A') + 1)
    return num

for c in ['A', 'B', 'Z', 'AA']:
    print(c, '->', col_to_num(c))

遍历行

ws.iter_rows(values_only=True) 会将每一行作为值元组返回。这是读取表格最简洁的方式。第一行通常是表头。

您可以像遍历任何可迭代对象一样遍历这些行。

rows = [
    ('Name', 'Age', 'City'),
    ('Ada', 36, 'London'),
    ('Linus', 54, 'Helsinki'),
]
header = rows[0]
for record in rows[1:]:
    print(dict(zip(header, record)))

查找已使用范围

ws.max_row 和 ws.max_column 会告诉您数据延伸到哪里。ws.dimensions 会返回类似 'A1:C10' 的范围字符串。使用它们可以避免读取空单元格。

读取一个范围

您可以对工作表进行切片:ws['A1:C3'] 会返回一个由单元格对象元组组成的行元组。当您只需要工作表的一部分,而不是每一行时,这种方式非常方便。

处理空单元格

空单元格会返回 None。真实的电子表格往往不够规整,因此读取时要防范缺失值,例如用默认值替代它们。这样可以避免后续处理崩溃。

raw_row = ('Ada', None, 'London')
clean = [v if v is not None else 'N/A' for v in raw_row]
print(clean)

跨多个工作表读取

一个工作簿可能会将数据分散到多个选项卡中,例如每个月一个选项卡。遍历 wb.sheetnames,选择每个工作表,然后使用相同的逻辑读取。为每一行标记其工作表名称,以便追踪数据来源。

这种模式可以将多个选项卡整合成一个合并数据集。

快速检查

测试您的读取技能。

回顾

现在您已经可以读取 Excel 文件:

  • 层次结构:工作簿 > 工作表 > 单元格
  • 使用带有 read_only 和 data_only 选项的 load_workbook
  • 通过 wb.active、wb['Name'] 和 wb.sheetnames 选择工作表
  • 使用 .value 和 iter_rows(values_only=True) 读取,并检查 max_row / max_column
  • 针对空单元格的 None 值进行防护

常见问题解答

「读取工作簿」课时是免费的吗?

是的 — 「读取工作簿」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Python Academy 课程的其余内容,请升级到 CoddyKit PRO。 Python Academy 课程共包含 4 节课。

「读取工作簿」这节课中我会学到什么?

打开并读取 Excel 文件 你通过在浏览器中直接运行的动手代码来练习 Python Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Python Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Python Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「读取工作簿」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Python Academy 课中编写并运行代码吗?

能。每节 Python Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 读取工作簿
  2. 写入和设置单元格样式
  3. 公式与图表
  4. 批量处理报告
← 返回 Python Academy