pin_drop当前位置:知识文库 ❯ 图文

Python openpyxl创建工作簿教程 - Workbook使用详解

一、概述

Workbook是openpyxl的核心对象,代表一个Excel工作簿文件。创建工作簿是使用openpyxl的第一步,新建的工作簿默认包含一个名为"Sheet"的活动工作表。通过Workbook对象可以管理工作表、属性、安全等全局设置。


二、语法

代码示例

from openpyxl import Workbook

wb = Workbook()
wb.save('filename.xlsx')

三、参数说明

Workbook构造参数

参数 类型 默认值 说明
write_only bool False 是否为只写模式(节省内存)
iso_dates bool False 是否使用ISO 8601日期格式

Workbook常用属性与方法

属性/方法 类型 说明
active Worksheet 获取活动工作表
sheetnames list 所有工作表名称列表
create_sheet(title, index) Worksheet 创建新工作表
remove(sheet) None 删除工作表
copy_worksheet(sheet) Worksheet 复制工作表
save(filename) None 保存工作簿
close() None 关闭工作簿
properties DocumentProperties 文档属性
read_only bool 是否只读模式

四、返回值

Workbook()返回一个新的Workbook对象。


五、代码示例

示例1:创建基本工作簿

代码示例

from openpyxl import Workbook

# 创建工作簿
wb = Workbook()

# 获取活动工作表
ws = wb.active
ws.title = '数据表'

# 写入数据
ws['A1'] = '编号'
ws['B1'] = '名称'
ws['C1'] = '价格'
ws.append([1, '苹果', 5.5])
ws.append([2, '香蕉', 3.2])
ws.append([3, '橙子', 4.8])

# 保存
wb.save('basic_workbook.xlsx')
print("基本工作簿已保存")

输出:

代码示例

基本工作簿已保存

示例2:管理工作表

代码示例

from openpyxl import Workbook

wb = Workbook()

# 默认工作表
print(f"默认工作表: {wb.sheetnames}")

# 创建新工作表
ws1 = wb.create_sheet('第一季度')
ws2 = wb.create_sheet('第二季度', 1)  # 插入到索引1位置
ws3 = wb.create_sheet('第三季度')

print(f"创建后: {wb.sheetnames}")

# 复制工作表
ws1['A1'] = '季度数据'
ws_copy = wb.copy_worksheet(ws1)
ws_copy.title = '第一季度(副本)'
print(f"复制后: {wb.sheetnames}")

# 删除工作表
wb.remove(ws3)
print(f"删除后: {wb.sheetnames}")

# 重命名
ws1.title = 'Q1'
print(f"重命名后: {wb.sheetnames}")

wb.save('sheet_management.xlsx')
print("工作表管理文件已保存")

输出:

代码示例

默认工作表: ['Sheet']
创建后: ['Sheet', '第二季度', '第一季度', '第三季度']
复制后: ['Sheet', '第二季度', '第一季度', '第三季度', '第一季度(副本)']
删除后: ['Sheet', '第二季度', '第一季度', '第一季度(副本)']
重命名后: ['Sheet', '第二季度', 'Q1', '第一季度(副本)']
工作表管理文件已保存

示例3:文档属性与只写模式

代码示例

from openpyxl import Workbook

# 设置文档属性
wb = Workbook()
wb.properties.title = '销售数据报表'
wb.properties.subject = '2024年度'
wb.properties.creator = 'Python脚本'
wb.properties.created = '2024-01-01'
wb.properties.description = '自动生成的销售数据'

print(f"标题: {wb.properties.title}")
print(f"创建者: {wb.properties.creator}")

# 只写模式(适合大数据量)
wb2 = Workbook(write_only=True)
ws = wb2.create_sheet('大数据')
for i in range(1, 101):
    ws.append([i, f'项目{i}', i * 10])

wb2.save('write_only.xlsx')
print("\n只写模式工作簿已保存(100行数据)")

输出:

代码示例

标题: 销售数据报表
创建者: Python脚本

只写模式工作簿已保存(100行数据)

六、实际应用场景

  • 报表系统:定期创建新的Excel工作簿写入数据

  • 数据导出:按月份创建不同工作表存储数据

  • 大数据导出:使用write_only模式节省内存


七、注意事项

注意:新建工作簿默认包含一个"Sheet"工作表,如不需要可删除

注意save()会覆盖同名文件,建议先检查文件是否存在

注意:write_only模式只能写入不能读取,且不能修改已有文件


八、工作簿创建模式对比

模式 写入 读取 内存占用 适用场景
默认模式 支持 支持 小文件读写
write_only 支持 不支持 大数据写入
read_only 不支持 支持 大文件读取

九、小结

  • Workbook()创建新工作簿,默认包含一个"Sheet"工作表

  • create_sheet()创建新工作表,remove()删除,copy_worksheet()复制

  • properties设置文档元信息(标题、作者等)

  • write_only模式适合大数据量写入,节省内存


十、练习题

练习1

创建一个工作簿,添加3个工作表("语文"、"数学"、"英语"),每个工作表写入科目名称

练习2

创建工作簿并设置文档属性(标题、作者、描述),保存后验证

练习3

使用write_only模式创建工作簿,写入1000行数据,对比与普通模式的内存差异

常见问题

如何删除新建工作簿默认的"Sheet"工作表?

使用wb.remove(wb.active)del wb["Sheet"]即可删除默认工作表。但要注意Excel至少需要一个工作表,不能删除所有工作表。

write_only模式和普通模式什么时候应该选择哪种?

当数据量较小(几千行以内)时,使用普通模式更灵活,可以随时读取和修改数据。当需要写入几万甚至几十万行数据时,使用write_only模式可以大幅降低内存消耗,避免程序崩溃。write_only模式只能按行追加写入,不能读取或修改已写入的数据。

如何设置工作簿的文档属性?

通过wb.properties对象可以设置标题(title)、主题(subject)、创建者(creator)、描述(description)等属性。这些属性可以在Excel的"文件→信息"中查看。

create_sheet()的index参数如何使用?

index参数指定新工作表在sheetnames列表中的插入位置。例如wb.create_sheet('新表', 0)会在最前面插入,wb.create_sheet('新表', 1)会在索引1位置插入。不指定index时默认追加到末尾。

标签: openpyxl 创建工作簿 Workbook write_only模式 文档属性 工作表管理

本文涉及AI创作

内容由AI创作,请仔细甄别

list快速访问

上一篇: Python openpyxl库简介与安装教程 - Excel文件处理入门 下一篇: Python openpyxl打开工作簿教程 - load_workbook使用详解

poll相关推荐