首页 > 编程语言 >PYTHON - openpyxl (一)

PYTHON - openpyxl (一)

时间:2022-12-02 12:22:21浏览次数:39  
标签:load openpyxl PYTHON 工作 sh workbook wb

1.1 安装

pip install openpyxl

1.2 工作簿

函数 说明
wb = load_workbook(filename) 打开工作簿
wb = Workbook() 创建空白工作簿
wb.save(filename) 保存工作簿

1.2.1 打开电子表格文件

类似于双击打开工作簿。

工作簿类型:Workbook

from openpyxl import Workbook, load_workbook

wb: Workbook = load_workbook("d:/hello.xlsx")
print(wb.sheetnames)

load_workbook 读取电子表格文件, 返回工作簿(Workbook)对象:

def load_workbook(filename, read_only=False, keep_vba=KEEP_VBA,data_only=False, keep_links=True):

参数:

  • filename: 打开工作表的文件名
  • read_only:只读模式,提升速度
  • keep_vba:保存vba内容
  • data_only:控制带有公式的单元格是否具有公式(默认值)或上次Excel读取工作表时存储的值
  • keep_links: 是否应保留对外部工作簿的链接。默认为True

1.2.2 创建空白工作簿

from openpyxl import Workbook

wb: Workbook = Workbook()
print(wb.sheetnames)

1.2.3 保存工作簿

from openpyxl import Workbook

wb: Workbook = Workbook()
print(wb.sheetnames)
wb.save(r"d:\1.xlsx")  # 保存工作簿

1.3 工作表

打开工作簿后,可以获取工作表。

工作表类型:Worksheet

函数 说明
wb["工作表名称"] 获取工作表对象
wb.active 获取激活的工作表
wb.worksheets 获取所有的工作表并放入列表返回
sh.title 获取工作表名称
wb.remove(工作表对象) 删除工作表
wb.create_sheet('工作表名称', 0) 在指定位置创建工作表
wb.copy_worksheet(工作表对象) 复制工作表
sh.title = "工作表新名称" 工作表改名

1.3.1 按名称获取工作表对象

根据工作表名称,获取工作表对象。

# 工作簿["工作表名称"]

from openpyxl import load_workbook

wb = load_workbook("d:/1.xlsx")
sh = wb["Sheet"]
print(sh)  # <Worksheet "Sheet">

1.3.2 获取激活的工作表对象

激活的工作表就是打开电子表格高亮显示的工作表。

# 工作簿.active

from openpyxl import load_workbook

wb = load_workbook("d:/1.xlsx")
sh = wb.active
print(sh) 

1.3.3 获取所有工作表对象

获取所有工作表对象,并以列表的形式返回。

# 工作簿.worksheets

from openpyxl import load_workbook

wb = load_workbook("d:/1.xlsx")
sh = wb.worksheets
print(sh)
# [<Worksheet "a1">, <Worksheet "a2">, <Worksheet "Sheet2">]

1.3.4 获取工作表名称

# 工作表.title

from openpyxl import load_workbook

wb = load_workbook("d:/1.xlsx")
for sh in wb.worksheets:
    print(sh.title)
    
'''
a1
a2
Sheet2
'''

1.3.5 删除工作表对象

# 工作簿.remove(工作表对象)

from openpyxl import load_workbook

wb = load_workbook("d:/1.xlsx")
sh = wb["Sheet2"]
wb.remove(sh)

1.3.6 创建工作表

# 工作簿.create_sheet('工作表名称', 索引)
from openpyxl import load_workbook

wb = load_workbook("d:/1.xlsx")
wb.create_sheet('database',0)

1.3.7 复制工作表

# 工作簿.copy_worksheet(工作表对象)

from openpyxl import load_workbook

wb = load_workbook("d:/1.xlsx")
sh = wb.copy_worksheet(wb["a2"]) # 生成 `a2 Copy` 工作表对象

1.3.8 工作表改名

# 工作表.title = "新名"

from openpyxl import load_workbook

wb = load_workbook("d:/1.xlsx")
sh = wb.copy_worksheet(wb["a2"])
sh.title = "a3"

1.4 单元格

类型:Cell

获取数据方法 说明
工作表["a1"] 获取一个单元格
工作表["a1:b10"] 获取指定范围的单元格
工作表["c"] 获取C列数据
工作表[1] 获取第一行数据
工作表.cell(row=行, column=列) 获取指定行与列的数据
工作表.iter_rows(最小行,最大行,最小列,最大列) 获取指定行与列范围的数据
工作表.values 获取整个工作表的值
工作表.rows 获取所有行
工作表.columns 获取所有列
utils.get_column_letter(数字) 获取列标题字母
utils.column_index_from_string(字母) 获取标题字母对应的列
工作表.max_row 获取最大行数
工作表.max_column 获取最大列数

1.4.1 通过名称获取一个单元格

# 工作表["单元格地址"]
from openpyxl import load_workbook
wb = load_workbook("d:/test.xlsx")
sh = wb["Sheet1"]
cell = sh["a1"]  # 获取a1单元格
print(cell,type(cell))

1.4.2 通过名称获取指定范围单元格

它返回一个元组组成的表格。

# 工作表["单元格范围"]
# 工作表["C"]  获取C列
# 工作表[1]    获取第一行
from openpyxl import load_workbook

wb = load_workbook("d:/test.xlsx")
sh = wb["Sheet1"]
cell = sh["a1:b2"]
print(cell)

# ((<Cell 'Sheet1'.A1>, <Cell 'Sheet1'.B1>), (<Cell 'Sheet1'.A2>, <Cell 'Sheet1'.B2>))

1.4.3 通过行列获取一个单元格

# 工作表.cell(row=行, column=列)
from openpyxl import load_workbook

wb = load_workbook("d:/test.xlsx")
sh = wb["Sheet1"]
cell = sh.cell(row=1, column=1)
print(cell)

1.4.4 通过行列获指定范围的单元格

# 工作表.iter_rows(最小行,最大行,最小列,最大列)

from openpyxl import load_workbook

wb = load_workbook("d:/test.xlsx")
sh = wb["Sheet1"]
range = sh.iter_rows(min_row=1, max_row=2, min_col=1, max_col=2)
for row in range:
    print(row)

'''
(<Cell 'Sheet1'.A1>, <Cell 'Sheet1'.B1>)
(<Cell 'Sheet1'.A2>, <Cell 'Sheet1'.B2>)
'''

1.4.5 获取整个工作表的数据(值)

获取的数据放在了一个可迭代对象中(以二维表格的形式存储)

# 工作表.values
from openpyxl import load_workbook

wb = load_workbook("d:/test.xlsx")
sh = wb["Sheet1"]
for row in sh.values:
    print(row)

'''
(1, 4)
(2, 5)
(3, 6)
'''

### 1.4.6 获取所有行

工作表.rows 会生成所有行的可迭代对象(生成器)

# 工作表.rows

from openpyxl import load_workbook

wb = load_workbook("d:/test.xlsx")
sh = wb["Sheet1"]
for row in sh.rows:
    print(row)

'''
(<Cell 'Sheet1'.A1>, <Cell 'Sheet1'.B1>)
(<Cell 'Sheet1'.A2>, <Cell 'Sheet1'.B2>)
(<Cell 'Sheet1'.A3>, <Cell 'Sheet1'.B3>)
'''

1.4.7 获取所有列

同获取所有行类似

# 工作表.columns

from openpyxl import load_workbook

wb = load_workbook("d:/test.xlsx")
sh = wb["Sheet1"]
for col in sh.columns:
    print(col)
    
"""
(<Cell 'Sheet1'.A1>, <Cell 'Sheet1'.A2>, <Cell 'Sheet1'.A3>)
(<Cell 'Sheet1'.B1>, <Cell 'Sheet1'.B2>, <Cell 'Sheet1'.B3>)
"""

1.4.8 列数(数字)与列标题(字母)的相互转换

给定列数,返回对应的列标题字母

给定列标题字母,返回对应的列数

# utils.get_column_letter(数字)
# utils.column_index_from_string(字母)

from openpyxl import load_workbook
from openpyxl import utils

wb = load_workbook("d:/test.xlsx")
sh = wb["Sheet1"]

col_title = utils.get_column_letter(1)
cell = sh[col_title+"2"]
print(cell)  # <Cell 'Sheet1'.A2>


col = utils.column_index_from_string("AA")
print(col)  # 27

1.4.9 获取最大行,最大列

# 工作表.max_row
# 工作表.max_column

from openpyxl import load_workbook

wb = load_workbook("d:/test.xlsx")
sh = wb["Sheet1"]
print(f"max_row:{sh.max_row}, max_column:{sh.max_column}")

标签:load,openpyxl,PYTHON,工作,sh,workbook,wb
From: https://www.cnblogs.com/three-sheep/p/16944077.html

相关文章