pin_drop当前位置:知识文库 ❯ 图文
Python openpyxl创建工作簿教程 - Workbook使用详解
一、概述
Workbook是openpyxl的核心对象,代表一个Excel工作簿文件。创建工作簿是使用openpyxl的第一步,新建的工作簿默认包含一个名为"Sheet"的活动工作表。通过Workbook对象可以管理工作表、属性、安全等全局设置。
二、语法
代码示例
from openpyxl import Workbook
wb = Workbook()
wb.save('filename.xlsx')三、参数说明
Workbook构造参数
Workbook常用属性与方法
四、返回值
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模式只能写入不能读取,且不能修改已有文件
八、工作簿创建模式对比
九、小结
-
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时默认追加到末尾。
本文涉及AI创作
内容由AI创作,请仔细甄别