第3章:openpyxl库入门:安装、创建、保存与加载工作簿
好,咱们正式开始玩转 openpyxl。这个库,说白了就是 Python 操作 Excel 的瑞士军刀。我最早接触它,是因为要给财务部做自动化报表——手动复制粘贴到崩溃,后来发现用 openpyxl 几行代码就搞定了。嗯,今天咱们就从最基础的四个动作开始:安装、创建、保存、加载。
3.1 安装 openpyxl
安装这事儿,其实一句话就能说清楚。但我在项目里见过太多人卡在这一步——不是装不上,是装错了环境。
打开你的终端(Windows 用 cmd 或 PowerShell,Mac/Linux 用终端),直接敲:
pip install openpyxl
如果你用的是 Python 3,有些系统里 pip 可能指向 Python 2,这时候用:
pip3 install openpyxl
我个人习惯用虚拟环境,避免把系统搞乱。你可以这样:
python -m venv excel_env
# Windows 激活
excel_env\Scripts\activate
# Mac/Linux 激活
source excel_env/bin/activate
pip install openpyxl
import openpyxl 不报错,就说明成了。我曾经遇到一个学员,装完还是报错,结果发现他电脑里有两个 Python 版本,pip 装到了旧版上。你想想看,这种坑多冤枉。
3.2 创建工作簿
安装好了,咱们来写第一行代码。创建一个全新的工作簿,就像在 Excel 里点「新建空白工作簿」一样。
import openpyxl
# 创建一个新的工作簿
wb = openpyxl.Workbook()
就这么简单。wb 就是咱们的工作簿对象。默认情况下,它会自带一个工作表,名字叫「Sheet」。你可以通过 wb.active 拿到当前活动的工作表:
ws = wb.active
print(ws.title) # 输出:Sheet
我个人习惯,创建完工作簿后,第一件事就是给工作表改个有意义的名字。比如:
ws.title = "销售数据"
为什么?因为我在项目里吃过亏——生成几十个报表,全是 Sheet1、Sheet2,交接给同事时人家一脸懵。嗯,命名规范真的很重要。
3.3 保存工作簿
创建了工作簿,往里面写了数据(咱们后面章节会细讲),最后一步就是保存。保存用 save() 方法:
wb.save("我的第一个工作簿.xlsx")
这里要注意几点:
- 文件路径可以是相对路径,也可以是绝对路径。我建议用绝对路径,尤其是在自动化脚本里,避免找不到文件。
- 文件后缀必须是
.xlsx,不能是.xls。openpyxl 不支持老版的 xls 格式。 - 如果文件已经存在,保存时会直接覆盖。嗯,这里要小心——我曾经手滑覆盖了一个重要的报表,还好有备份。
f"报表_{datetime.now().strftime('%Y%m%d_%H%M%S')}.xlsx"
3.4 加载已有工作簿
很多时候,咱们不是从零开始,而是需要修改一个已有的 Excel 文件。比如,每天从系统导出一个报表,咱们用 Python 自动处理它。这时候就需要加载已有工作簿。
import openpyxl
# 加载已有工作簿
wb = openpyxl.load_workbook("已有文件.xlsx")
加载后,你可以通过工作表名来获取具体的工作表:
ws = wb["Sheet1"] # 或者 wb.active 获取当前活动工作表
然后你就可以读取里面的数据、修改、再保存。举个例子:
wb = openpyxl.load_workbook("销售数据.xlsx")
ws = wb.active
# 读取 A1 单元格的值
print(ws["A1"].value)
# 修改 B2 单元格的值
ws["B2"] = "已更新"
# 保存
wb.save("销售数据_已更新.xlsx")
这里有个坑,我必须要说。加载大文件时,openpyxl 默认是「只读模式」?其实不是,它默认是读写模式。但如果你只想读取数据,可以用 read_only=True 来节省内存:
wb = openpyxl.load_workbook("超大文件.xlsx", read_only=True)
为什么?因为 openpyxl 加载文件时会把整个文件读入内存。如果文件有几十兆甚至上百兆,内存占用会很高。我在处理一个 50MB 的报表时,差点把笔记本搞死机。后来用了只读模式,内存占用直接降了 80%。
3.5 完整示例:从创建到保存
咱们把今天学的串起来,写一个完整的例子:
import openpyxl
# 1. 创建工作簿
wb = openpyxl.Workbook()
# 2. 获取活动工作表并改名
ws = wb.active
ws.title = "员工信息"
# 3. 写入一些数据
ws["A1"] = "姓名"
ws["B1"] = "部门"
ws["C1"] = "工号"
ws["A2"] = "张三"
ws["B2"] = "技术部"
ws["C2"] = "1001"
# 4. 保存
wb.save("员工信息表.xlsx")
print("文件已保存!")
# 5. 加载并验证
wb2 = openpyxl.load_workbook("员工信息表.xlsx")
ws2 = wb2.active
print(f"工作表名:{ws2.title}")
print(f"A1 内容:{ws2['A1'].value}")
运行这段代码,你会看到控制台输出:
文件已保存!
工作表名:员工信息
A1 内容:姓名
嗯,到这里,openpyxl 的入门四步走就讲完了。你想想看,是不是比手动操作 Excel 爽多了?下一章咱们会深入单元格操作,包括读写数据、格式化、合并单元格等等。到时候你会觉得,Excel 自动化这事儿,真没那么玄乎。
- 安装:
pip install openpyxl - 创建:
wb = openpyxl.Workbook() - 保存:
wb.save("文件名.xlsx") - 加载:
wb = openpyxl.load_workbook("文件名.xlsx") - 注意文件后缀、内存占用、覆盖风险