Python办公自动化:使用openpyxl 创建与保存 Excel 工作簿

1 创建新的工作簿

在开始任何 Excel 操作之前,首先需要创建一个工作簿。openpyxl 提供了简单的接口来创建新的工作簿。

创建一个空白的工作簿

我们可以使用 openpyxl.Workbook() 来创建一个新的空白工作簿。以下是一个简单的示例:

python 复制代码
import openpyxl

# 创建一个新的空白工作簿
workbook = openpyxl.Workbook()

# 获取当前活动的工作表
sheet = workbook.active

# 输出当前活动工作表的名称
print("默认的工作表名称:", sheet.title)  # 默认名称为 'Sheet'

# 保存工作簿
workbook.save('new_workbook.xlsx')

代码解释

  • openpyxl.Workbook():创建一个新的空白工作簿对象。
  • workbook.active:获取当前活动的工作表。默认情况下,openpyxl 会为新创建的工作簿添加一个名为 "Sheet" 的工作表。
  • workbook.save('new_workbook.xlsx'):将工作簿保存为一个文件,文件名为 new_workbook.xlsx

小贴士

  • 一个工作簿可以包含多个工作表。在创建工作簿后,我们可以添加、删除或重命名工作表。
  • active 属性总是指向当前工作簿中打开的第一个工作表。

2 保存工作簿到指定位置

保存工作簿是 Excel 操作中的基本步骤。我们可以通过指定路径和文件名来保存工作簿。

保存到当前目录

前面的例子已经展示了如何保存工作簿到当前脚本所在的目录。示例代码如下:

python 复制代码
import openpyxl

# 创建一个新的工作簿
workbook = openpyxl.Workbook()

# 保存工作簿到当前目录
workbook.save('current_directory_workbook.xlsx')

保存到指定目录

如果想将工作簿保存到指定的目录,可以在保存时指定完整的路径:

python 复制代码
import openpyxl

# 创建一个新的工作簿
workbook = openpyxl.Workbook()

# 保存工作簿到指定路径
file_path = '/path/to/your/directory/desired_filename.xlsx'
workbook.save(file_path)

注意:请确保文件路径存在,否则保存操作将失败。

代码解释

  • workbook.save('file_path/desired_filename.xlsx'):将工作簿保存到指定的路径。路径应包含文件名和扩展名(.xlsx.xlsm)。

覆盖现有文件

如果指定的文件名已存在,save() 操作将覆盖该文件。为避免误操作,可以在保存前检查文件是否存在:

python 复制代码
import os
import openpyxl

# 创建一个新的工作簿
workbook = openpyxl.Workbook()

# 检查文件是否已存在
file_path = 'existing_file.xlsx'
if os.path.exists(file_path):
    print(f"文件 {file_path} 已存在,将覆盖该文件。")
else:
    print(f"文件 {file_path} 不存在,创建新文件。")

# 保存工作簿
workbook.save(file_path)

3 打开现有工作簿

有时,我们需要打开并修改一个现有的 Excel 文件。openpyxl 可以轻松实现这一点。

打开一个现有的工作簿

我们使用 openpyxl.load_workbook() 来加载现有的 Excel 文件:

python 复制代码
import openpyxl

# 打开现有的工作簿
workbook = openpyxl.load_workbook('existing_file.xlsx')

# 获取活动工作表
sheet = workbook.active

# 输出当前活动工作表的名称
print("当前活动工作表名称:", sheet.title)

# 显示A1单元格的值
print("A1单元格的值:", sheet['A1'].value)

代码解释

  • openpyxl.load_workbook('existing_file.xlsx'):加载一个已经存在的 Excel 文件并创建工作簿对象。
  • sheet['A1'].value:获取指定单元格的值。

只读模式与写入模式

  • 只读模式 :当处理非常大的 Excel 文件时,可以通过设置 read_only=True 来加载工作簿。这将显著减少内存占用,但不支持修改文件。
  • 写入模式:默认模式是可读写的。如果只需要读取数据,建议使用只读模式来提高效率。

示例代码(只读模式):

python 复制代码
import openpyxl

# 以只读模式打开现有工作簿
workbook = openpyxl.load_workbook('existing_file.xlsx', read_only=True)

# 获取活动工作表
sheet = workbook.active

# 显示A1单元格的值
print("A1单元格的值:", sheet['A1'].value)

4 文件格式:xlsx vs xlsm

在使用 openpyxl 时,了解文件格式的区别非常重要。openpyxl 主要支持以下两种文件格式:

xlsx 文件格式

  • 扩展名.xlsx
  • 特点:这是 Excel 2007 及以后的默认文件格式,支持丰富的 Excel 功能如图表、数据透视表、公式等。
  • 兼容性 :大多数应用程序和库都支持 .xlsx 文件。

xlsm 文件格式

  • 扩展名.xlsm
  • 特点 :这是带有宏的 Excel 文件格式。宏是用 VBA(Visual Basic for Applications)编写的小程序,可以自动执行某些任务。openpyxl 可以读取 .xlsm 文件,但不能执行或编辑其中的宏。
  • 注意事项 :如果你需要处理包含宏的 Excel 文件并希望保留这些宏,必须使用 .xlsm 格式保存。

示例代码:保存为 .xlsm 文件

python 复制代码
import openpyxl

# 创建一个新的工作簿
workbook = openpyxl.Workbook()

# 保存为 xlsm 格式
workbook.save('workbook_with_macros.xlsm')
相关推荐
d***95627 分钟前
springboot接入deepseek深度求索 java
java·spring boot·后端
高-老师11 分钟前
WRF模式与Python融合技术在多领域中的应用及精美绘图
人工智能·python·wrf模式
小白学大数据20 分钟前
基于Splash的搜狗图片动态页面渲染爬取实战指南
开发语言·爬虫·python
零日失眠者26 分钟前
【文件管理系列】003:重复文件查找工具
后端·python
CoderYanger26 分钟前
C.滑动窗口-越短越合法/求最长/最大——2958. 最多 K 个重复元素的最长子数组
java·数据结构·算法·leetcode·哈希算法·1024程序员节
洞窝技术34 分钟前
Redis 4.0 升级至 5.0 实施手册
java·redis
FreeCode35 分钟前
一文了解LangGraph智能体设计开发过程:Thinking in LangGraph
python·langchain·agent
无代码专家1 小时前
设备巡检数字化解决方案:构建高效闭环管理体系
java·大数据·人工智能
西柚小萌新1 小时前
【深入浅出PyTorch】--9.使用ONNX进行部署并推理
人工智能·pytorch·python
nvd111 小时前
SSE 流式输出与 Markdown 渲染实现详解
javascript·python