欢迎来到xiaoyufuture的博客

时钟canvas
山重水复疑无路,柳暗花明又一村。
切换亮暗主题

openpyxl库与模块导入

工作簿处理思路:打开工作簿->确认工作表->操作单元格

$\S$1.1 工作簿

openpyxl库可以处理Excel2010以后的电子表格格式,包括:xlsx/xlsm/xltx/xltm

import openpyxl

# 获取工作表对象
f1 = openpyxl.load(file_path1)
# 创建新工作簿对象
new_f2 = openpyxl.Workbook()
# 保存工作簿,文件名为new_excel.xlsx
new_f2.save("./new_excel.xlsx")

一种较为简单的书写方式:
from 库/模块 import 函数/方法/类/变量

from openpyxl import load_workbook,Workbook

# 打开已有工作簿
f1 = load_workbook(file_path1)
# 创建新工作簿
new_f2 = Workbook()
# 保存工作簿,文件名为new_excel.xlsx
new_f2.save("./new_excel.xlsx")

工作簿对象的save()方法:
工作簿对象.save(文件路径)

# 创建工作簿对象
f1 = Workbook()
# 新建一个.xlsx文件
f1.save(file_path)
# 获取工作簿对象
f2 = load_workbook(file_path2)
# 若文件路径不变,内容将覆盖原有的.xlsx文件
f2.save(file_path2)
# 若文件路径改变,将另存为新的.xlsx文件
f2.save(file_path3)

$\S$1.2 工作表

获取工作表

from openpyxl import load_workbook

# 打开工作簿
f1 = load_workbook(file_path)
# 获取活动工作表(单一工作表)
f1_sheet = f1.active
# 获取指定工作表对象(多张工作表)
f1_sheet2 = f1[sheet_name]

获取单行或单列
工作表对象[行数] 或 工作表对象[列名]

获取多行数据
工作表对象.iter_rows(min_row, max_row, min_col, max_col, value_only=False)
min_row 最小行索引,默认值为1.
max_row 最大行索引,默认值为表格中有数据的最下面一行的行数.
min_col 最小列索引,默认值为1。
max_col 最大列索引,默认值为表格中有数据的最右面一列的列数。
value_only True返回单元格的值(只读时),False返回单元格对象(写入数据时),默认值为False。

from openpyxl import load_workbook

# 打开工作簿
f1 = load_workbook(file_path)
# 获取工作表
f1_sheet = f1[sheet_name]
# 读取表中数据,返回第2-12行,第2-3列范围的单元格内的所有数据,若为空值则返回None。
for row in f1_sheet.iter_rows(min_row=2, max_row=12,
                              min_col=2, max_col=3, values_only=True):
    print(row)

通过行数或者列名来指定具体的行或列,然后通过for循环遍历获取指定行或列中的每一个单元格对象
添加数据
工作表对象.append(列表/元组)

from openpyxl import load_workbook

# 打开工作簿
f1 = load_workbook(file_path)
# 获取活动工作表
f1_sheet = f1.active

# 待添加数据
info_list = ['A', 'B', 1, 'C']
info_tuple = ('A', 'B', 2, 'C')
# 添加数据
f1_sheet.append(info_list)
f1_sheet.append(info_tuple)

# 保存工作表
f1.save(file_path)

$\S$1.3 单元格

获取单元格对象的三种方式
(1) for row in 工作表对象.iter_rows(values_only=False)
(2) for cell in 工作表对象[行数] ; for cell in 工作表对象['列名']
(3) 工作表对象['单元格坐标']

from openpyxl import load_workbook

f1 = load_workbook(file_path)
f1_sheet = f1.active

# for循环遍历,获取第三行的所有单元格对象
for row_cell in f1_sheet[3]
    print(row_cell)
# for遍历循环,获取第三列的所有单元格对象
for col_cell in f1_sheet['C']
    print(col_cell)
	
print(f1_sheet['A1'])

获取单元格对象的值
单元格对象.value
给单元格对象赋值
单元格对象.value = 值

posted on 2025-06-20 11:55  xiaoyufuture  阅读(66)  评论(0)    收藏  举报

导航