openpyxl Workbook
Workbook 说明
Workbook 类是用于表示 Excel 工作簿的核心类。它允许我们创建、读取、编辑和保存 Excel 工作簿文件。
Workbook 导入
from openpyxl import Workbook
Workbook 初始化
from openpyxl import Workbook, load_workbook
# 创建一个新的Excel工作簿
wb = Workbook()
print(type(wb), wb) # 输出: <class 'openpyxl.workbook.workbook.Workbook'> <openpyxl.workbook.workbook.Workbook object at 0x000002602AEB5A10>
# 加载现有的 Excel 文件
workbook = load_workbook(file_path)
# 保存工作簿到指定的文件名
wb.save("execl_test.xlsx")
# 关闭工作簿
wb.close()
Workbook 的属性
active
active 描述:当前活动的工作表。可以使用该属性读取和修改当前活动工作表中的数据,包括单元格的数值、公式、样式、名称、行高、列宽等。
active 返回值类型:openpyxl.worksheet.worksheet.Worksheet
from openpyxl import Workbook
# 创建一个新的Excel工作簿
wb = Workbook()
# 获取当前活动的工作表
ws = wb.active
print(type(ws)) # 输出: <class 'openpyxl.worksheet.worksheet.Worksheet'>
print(ws) # 输出: <Worksheet "Sheet">
print(ws.title) # 输出: Sheet
print(ws.values) # 输出: <generator object Worksheet.values at 0x00000273669E8040>
# 保存工作簿到指定的文件名
wb.save("execl_test.xlsx")
# 关闭工作簿
wb.close()
encoding
encoding 描述:它表示工作簿的编码方式(encoding)。默认情况下,编码方式被设置为 UTF-8。
encoding 返回值类型:string (str)
from openpyxl import Workbook
# 创建一个新的Excel工作簿
wb = Workbook()
# 获取工作簿的编码格式
print(wb.encoding) # 输出: utf-8
# 保存工作簿到指定的文件名
wb.save("execl_test.xlsx")
# 关闭工作簿
wb.close()
properties
properties 描述:用于获取或设置工作簿的文档属性。通过这个属性,你可以访问并操作工作簿的元数据信息,比如标题、主题、作者、创建日期等。
properties 返回值类型: openpyxl.packaging.core.DocumentProperties
from openpyxl import Workbook
# 创建一个新的Excel工作簿
wb = Workbook()
# 获取文档属性对象
properties = wb.properties
# 获取文档属性对象中的属性值
print(properties.title) # 输出: None
print(properties.creator) # 输出: openpyxl
print(properties.created) # 输出: 2024-05-15 03:19:47.365176
# 保存工作簿到指定的文件名
wb.save("execl_test.xlsx")
# 关闭工作簿
wb.close()
sheetnames
sheetnames 描述:返回一个包含工作簿中所有工作表名称的列表。
sheetnames 返回值类型:list
from openpyxl import Workbook
# 创建一个新的Excel工作簿
wb = Workbook()
print(type(wb.sheetnames), wb.sheetnames) # 输出: <class 'list'> ['Sheet']
# 保存工作簿到指定的文件名
wb.save("execl_test.xlsx")
# 关闭工作簿
wb.close()
worksheets
worksheets 描述: 返回一个包含工作簿中所有工作表对象的列表。
worksheets 返回值类型:list
from openpyxl import Workbook
# 创建一个新的Excel工作簿
wb = Workbook()
print(type(wb.worksheets), wb.worksheets) # 输出: <class 'list'> [<Worksheet "Sheet">]
# 保存工作簿到指定的文件名
wb.save("execl_test.xlsx")
# 关闭工作簿
wb.close()
Workbook 的方法
create_sheet()
create_sheet() 描述: 用于在工作簿中创建一个新的工作表,并返回新创建的工作表对象。
create_sheet(title=None, index=None):
title (可选): 新工作表的标题,默认为 SheetX,其中 X 是一个数字。
index (可选): 新工作表的索引位置,默认为最后位置。索引从0开始,表示工作簿的第一个位置。
from openpyxl import Workbook
# 创建一个新的Excel工作簿对象
wb = Workbook()
# 在最后一个位置创建一个名为"DataSheet"的新工作表
ws = wb.create_sheet("DataSheet")
# 在第一个位置创建一个名为"Summary"的新工作表
ws1 = wb.create_sheet("Summary", 0)
# 在指定的索引位置创建多个新工作表
ws3 = wb.create_sheet("Mysheet1", 0)
ws4 = wb.create_sheet("Mysheet2", 1)
ws5 = wb.create_sheet("Mysheet3", 1)
# 在倒数第二个位置创建一个名为"Mysheet"的新工作表
ws6 = wb.create_sheet("Mysheet", -1)
print(type(ws)) # 输出: <class 'openpyxl.worksheet.worksheet.Worksheet'>
print(ws) # 输出: <Worksheet "DataSheet">
print(ws.title) # 输出: DataSheet
# 保存工作簿到指定的文件名
wb.save("execl_test.xlsx")
# 关闭工作簿
wb.close()
remove(worksheet)
remove(worksheet) 描述: 用于从工作簿中删除指定的工作表。
remove(worksheet):
worksheet: 要删除的工作表对象。
from openpyxl import Workbook
# 创建工作簿对象
wb = Workbook()
# 创建工作表
ws1 = wb.create_sheet("Sheet1")
ws2 = wb.create_sheet("Sheet2")
# 删除工作表
wb.remove(ws1)
# 保存工作簿到指定的文件名
wb.save("execl_test.xlsx")
# 关闭工作簿
wb.close()
save(filename)
save(filename) 描述: 通过这个方法,可以将对工作簿内容的任何更改持久化到硬盘上的文件中。
save(filename) 用法:
filename: 要保存到的文件的路径和名称。对已存在的文件会进行覆盖保存。
from openpyxl import Workbook
# 创建一个新的Excel工作簿对象
wb = Workbook()
# 保存工作簿到指定的文件名
wb.save("execl_test.xlsx")
# 关闭工作簿
wb.close()
close()
close() 描述: 关闭工作簿。
from openpyxl import Workbook
# 创建工作簿对象
wb = Workbook()
# 保存工作簿到指定的文件名
wb.save("execl_test.xlsx")
# 关闭工作簿
wb.close()
copy_worksheet()
copy_worksheet(): 方法用于在一个工作簿中复制一个工作表到一个新的工作表对象。默认在末尾位置。
copy_worksheet(source): 要被复制的源工作表对象。在openpyxl库中,通常表示为一个Worksheet对象。返回一个新的工作表对象,该对象是源工作表的副本,包含原始工作表的所有数据、格式和设置。
from openpyxl import load_workbook
workbook = load_workbook('execl_test.xlsx')
print(type(workbook.sheetnames), workbook.sheetnames) # 输出: <class 'list'> ['Sheet1', 'Mysheet2', 'Summary', 'Mysheet1', 'DataSheet']
# 获取要复制的源工作表对象
source = workbook[workbook.sheetnames[0]]
# 复制工作表到新的工作表对象
target = workbook.copy_worksheet(source)
print(target.title) # 输出:Sheet1 Copy
print(type(workbook.sheetnames), workbook.sheetnames) # 输出: <class 'list'> ['Sheet1', 'Mysheet2', 'Summary', 'Mysheet1', 'DataSheet', 'Sheet1 Copy']
# 保存并关闭工作簿
workbook.save('execl_test.xlsx')
workbook.close()
move_sheet()
move_sheet(): 方法用于在工作簿中移动工作表的位置。
move_sheet(sheet, offset=0):
sheet:要移动的工作表对象。
offset:移动的偏移量。正数表示向右移动,负数表示向左移动。默认为0,即不移动。超出的位置将自动移动到左右两侧。
from openpyxl import load_workbook
workbook = load_workbook('execl_test.xlsx')
print(type(workbook.sheetnames), workbook.sheetnames) # 输出: <class 'list'> ['Summary', 'Sheet1', 'Mysheet2', 'Mysheet1', 'DataSheet', 'Sheet1 Copy']
# 获取要移动的工作表对象
sheet_to_move = workbook['Summary']
# 将工作表向右移动最后一个位置。超出的位置将自动移动到最右侧
workbook.move_sheet(sheet_to_move, offset=100)
print(type(workbook.sheetnames), workbook.sheetnames) # 输出: <class 'list'> ['Sheet1', 'Mysheet2', 'Mysheet1', 'DataSheet', 'Sheet1 Copy', 'Summary']
# 将工作表向左移动8个位置
workbook.move_sheet(sheet_to_move, offset=-15)
print(type(workbook.sheetnames), workbook.sheetnames) # 输出: <class 'list'> ['Summary', 'Sheet1', 'Mysheet2', 'Mysheet1', 'DataSheet', 'Sheet1 Copy']
# 保存并关闭工作簿
workbook.save('execl_test.xlsx')
workbook.close()
load_workbook()
load_workbook(): 用于打开一个 Excel 文件并返回一个Workbook对象,可以使用这个对象来操作 Excel 文件中的工作表数据。
load_workbook(filename, read_only=False, keep_vba=KEEP_VBA, data_only=False, keep_links=True):
filename (str): Excel 文件的路径。
read_only (bool, optional): 如果设置为 True,则以只读模式加载文件,不会保存对文件的更改(默认为 False)。
keep_vba (bool, optional): 控制是否保留 VBA 宏 (默认为 KEEP_VBA)。
data_only (bool, optional): 如果设置为 True,则只保留单元格中的值,公式将被忽略 (默认为 False)。
keep_links (bool, optional): 控制是否保留工作簿之间的链接 (默认为 True)。
返回值:返回一个Workbook对象
from openpyxl import load_workbook
# 加载 Excel 文件
filename = "example.xlsx"
workbook = load_workbook(filename)
# 获取工作表对象
sheet = workbook.active
# 输出第一个单元格的值
print(sheet['A1'].value)
# 保存更新后的数据
workbook.save(filename)
# 关闭工作簿
workbook.close()
参考文档
https://openpyxl.readthedocs.io/en/stable/#/