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/#/