简介:
优点:
- 用户读取/写入后缀为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()