Python openpyxl模块用法详解(未完待续...)

这篇博客介绍了如何使用Python的openpyxl库进行Excel文件的操作,包括创建和读取xlsx/xlsm/xltx/xltm格式的工作簿和工作表,以及设置单元格的内容、行宽列高等。同时,文章也指出了openpyxl不支持xls文件的读写,并展示了详细的代码示例,如创建工作簿、读取单元格值、修改工作表名称、设置单元格样式等。
摘要由CSDN通过智能技术生成

简介:

优点:

  • 用户读取/写入后缀为xlsx / xlsm / xltx / xltm的Excel表格文件

缺点:

  • 不能读取/写入后缀为xls的Excel表格文件

下载:

  • pip install openpyxl

一、创建

1.创建工作簿

import openpyxl

# 创建工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.workbook.Workbook()
work_book.save(file_path)
work_book.close()

2.创建工作表

# 打开工作簿,创建工作表
file_path = "./workBook.xlsx"
sheet_name = "Sheet1"

work_book = openpyxl.load_workbook(file_path)

# index是sheet创建的位置,从0开始
sheet = work_book.create_sheet(title=sheet_name, index=None) 

# 保存工作簿
work_book.save(file_path)

# 关闭工作簿
work_book.close()

二、读取操作

打开工作表

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

获取工作簿的命名样式列表

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

# 获取工作簿的命名样式列表
style_names_list = work_book.style_names

获取工作簿中的图表列表

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

# 获取工作簿中的图表列表
chartsheets_list = work_book.chartsheets

获取所有的表名

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

# 获取所有表名
sheet_names = work_book.sheetnames

获取所有的工作表对象

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

# 获取所有的工作表对象
sheet_objects = work_book.worksheets

获取当前活动的工作表对象

所谓当前活动的工作表,就是使用软件打开excel文件,看到的当前工作表

# 打开工作簿
file_path = "workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

# 获取当前活动的工作表对象
sheet = work_book.active

根据索引,获取工作表对象

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

# 根据索引获取工作表对象,从0开始
sheet = work_book.worksheets[0]

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

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

# 根据表名获取工作表对象
sheet = work_book["Sheet1"]

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

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

# 根据索引获取工作表对象,从0开始
sheet = work_book.worksheets[0]

# 根据工作表对象,获取工作表名称
sheet_name = sheet.title

根据工作表对象,获取工作表对象的索引

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

# 根据表名获取工作表对象
sheet = work_book["Sheet1"]

# 根据工作表对象,获取工作表的索引
sheet_index = work_book.index(sheet)

根据行序号和列序号,获取单元格对象。序号从1开始

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

# 根据表名获取工作表对象
sheet = work_book["Sheet1"]

# 根据行序号和列序号,获取单元格对象。序号从1开始
cell = sheet.cell(row=1, column=1)

根据行序号和列序号,获取单元格的值。序号从1开始

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

# 根据表名获取工作表对象
sheet = work_book["Sheet1"]

# 根据行序号和列序号,获取单元格的值。序号从1开始
cell_value = sheet.cell(row=1, column=1).value

根据单元格对象,获取单元格所在的行、所在的列

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

# 获取工作表对象
sheet = work_book.worksheets[0]

# 获取单元格的对象
cell = sheet.cell(1,1)

# 获取单元格所在的行
cell_row = cell.row

# 获取单元格所在的列
cell_column = cell.column

根据工作表对象,获取某个范围内的单元格对象

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

# 获取工作表对象
sheet = work_book.worksheets[0]

语法:
iter_rows(self, min_row=None, max_row=None, min_col=None, max_col=None)
iter_cols(self, min_row=None, max_row=None, min_col=None, max_col=None)

# 按行获取某个范围内的单元格对象。获取第一行到第三行的单元格对象
cell_rows = sheet.iter_rows(min_row=1, max_row=3)

# 按列获取某个范围内的单元格对象。获取第一列到第三列的单元格对象
cell_cols = sheet.iter_cols(min_col=1, max_col=3)

# 获取第一行到第三行,第一列到第四列的单元格对象
写法一:
cell_rows_cols = sheet.iter_rows(min_row=1, max_row=3, min_col=1, max_col=4)

写法二:
cell_rows_cols = sheet.iter_cols(min_row=1, max_row=3, min_col=1, max_col=4)

根据工作表对象,获取所有行的单元格对象;获取所有列的单元格对象;获取所有行的单元格的内容(数据)

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

# 获取工作表对象
sheet = work_book.worksheets[0]

# 根据工作表对象,获取所有行的单元格对象
sheet_row_cells = sheet.rows

# 根据工作表对象,获取所有列的单元格对象
sheet_column_cells = sheet.columns

# 根据工作表对象,获取所有行的单元格的内容(数据)
sheet_row_data = sheet.values

根据工作表对象,获取某一行所有的单元格对象;获取某一列所有的单元格对象

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

# 获取工作表对象
sheet = work_book.worksheets[0]

# 获取第一行的所有单元格对象
cell_row = sheet["1"]

# 获取第A列的所有单元格对象
cell_column = sheet["A"]

获取最小的行数

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

# 根据表名获取工作表对象
sheet = work_book["Sheet1"]

# 获取最小的行数
sheet_min_row = sheet.min_row

获取最大的行数

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

# 根据表名获取工作表对象
sheet = work_book["Sheet1"]

# 获取最大的行数
sheet_max_row = sheet.max_row

获取最小的列数

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

# 根据表名获取工作表对象
sheet = work_book["Sheet1"]

# 获取最小的列数
sheet_min_column = sheet.min_column

获取最大的列数

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

# 根据表名获取工作表对象
sheet = work_book["Sheet1"]

# 获取最大的列数
sheet_max_column = sheet.max_column

三、写入操作

控制单元格可修改和可读或只可读,默认False 可修改和可读

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path, read_only=False)

控制单元格内容显示 公式 或 值,默认False 显示公式

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path, data_only=False)

创建工作表

# 打开工作簿,创建工作表
file_path = "./workBook.xlsx"
sheet_name = "Sheet1"

work_book = openpyxl.load_workbook(file_path)

# index是sheet创建的位置,从0开始
sheet = work_book.create_sheet(title=sheet_name, index=None) 

# 保存工作簿
work_book.save(file_path)

# 关闭工作簿
work_book.close()

根据工作表对象,删除工作表

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

# 获取工作表
sheet = work_book.worksheets[0]

# 根据工作表对象,删除工作表
work_book.remove(sheet)

# 保存工作簿
work_book.save(file_path)

# 关闭工作簿
work_book.close()

根据工作表名,删除工作表

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

# 根据工作表名,删除工作表
del work_book["Sheet1"]
work_book.save(file_path)

# 保存Excel
work_book.save(file_path)

# 关闭Excel
work_book.close()

根据单元格对象,写入数据

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

# 获取工作表
sheet = work_book.worksheets[0]

# 获取单元格对象
cell = sheet.cell(1,1)

# 给单元格赋值
cell.value = "内容"

# 保存Excel
work_book.save(file_path)

# 关闭Excel
work_book.close()

根据工作表对象,修改表名

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

# 获取工作表
sheet = work_book.worksheets[0]

# 修改表名
sheet.title = "新表名"

# 保存Excel
work_book.save(file_path)

# 关闭Excel
work_book.close()

根据工作表对象,修改行宽、列高

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

# 获取工作表
sheet = work_book.worksheets[0]

# 修改第一行的行宽
sheet.row_dimensions[1].height = 100

# 修改第一列的列高
sheet.column_dimensions["A"].width = 100

# 保存Excel
work_book.save(file_path)

# 关闭Excel
work_bokk.close()

根据单元格对象,填充和渐变

from openpyxl.styles import PatternFill, GradientFill

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

# 获取工作表
sheet = work_book.worksheets[0]

# 获取单元格对象
cell_1 = sheet.cell(1,1)

# 设置填充参数

fill_1 = PatternFill(
    
    patternType="solid",  # 填充类型,可选none、solid、darkGray、mediumGray、lightGray、lightDown、lightGray、lightGrid
    fgColor="F562a4",  # 前景色,16进制rgb
    bgColor="0000ff",  # 背景色,16进制rgb

    # fill_type=None,  # 填充类型
    # start_color=None, # 前景色,16进制rgb
    # end_color=None    # 背景色,16进制rgb
)

# 填充操作
cell_1.fill = fill

# 设置渐变参数
gradient_fill = GradientFill(

    degree=60,  # 角度
    stop=("000000", "FFFFFF")  # 渐变颜色,16进制rgb

)

# 渐变操作
cell_1.fill = gradient_fill

# 保存Excel
work_book.save(file_path)

# 关闭Excel
work_book.close()

根据工作表对象,逐行写入数据(在工作表的最后一行写入)

# 打开工作簿
file_path = "./workBook.xlsx"
work_book = openpyxl.load_workbook(file_path)

# 获取工作表
sheet = work_book.worksheets[0]

lists = [
    ['张飞', '123456'],
    ['赵云', '123456'],
    ['许褚', '123456'],
    ['典韦', '123456'],
    ['关羽', '123456'],
    ['黄忠', '123456'],
    ['徐晃', '123456'],
    ['马超', '123456']
]

# 逐行写入数据
for list in lists:
    sheet.append(login)

# 保存Excel
work_book.save(file_path)

# 关闭Excel
work_book.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值