什么是openpyxl
openpyxl是python中常用于处理Excel的库,另一个是xlrd。
openpyxl支持对Excel文件的读和写,xlrd仅支持读取,写入操作需要用到xlwt库;
openpyxl支持.xlsx格式的文件,xlrd仅能支持.xls格式的文件(Excel 2003 及更早版本);
Openpyxl能够处理Excel中的复杂功能,例如图表、公式、数据验证、条件格式化等,这使得它在处理高级Excel功能时非常有用,但在处理大Excel文件时性能上可能不如xlrd这种专门的库。
安装
pip install openpyxl
使用
操作工作簿
创建工作簿
wb = openpyxl.Workbook()
保存工作簿
wb.save('example.xlsx')
读取工作簿
wb = openpyxl.load_workbook('example.xlsx')
操作工作表
获取工作表
ws = wb["sheet_name"] # 指定工作表名称
wb.sheetnames # 全部的工作表名称
wb.active # 当前活跃的工作表
创建工作表
ws = wb.create_sheet("sheet") # 插入到最后 (默认)
ws = wb.create_sheet("sheet", 0) # 插入到最前
ws = wb.create_sheet("sheet", -1) # 插入到倒数第二
复制工作表
target = wb.active
new = wb.copy_worksheet(target)
修改工作表表名
ws.title = "new_sheet_name"
修改工作表标签颜色
ws.sheet_properties.tabColor = "F6A57C" # RRGGBB格式的颜色代码
操作单元格
读取单个单元格的值
cell_value = ws['A1'].value
读取多个单元格的值
# 指定区域
for row in ws["A1:E5"]:
for cell in row:
print(cell.value)
# 指定行和列
for row in ws.iter_rows(min_row=1, max_row=5, min_col=1, max_col=5):
for cell in row:
print(cell.value)
# 不指定范围 获取全部值
for row in ws.values:
for value in row:
print(value)
# 全部行 ws.rows
# 全部列 ws.columns
写入单个单元格数据
ws['A1'] = 'Hello World'
写入多个单元格数据
data = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
]
for row in data:
ws.append(row)
拆分合并单元格
ws.merge_cells('A1:D1') # 合并单元格
ws.unmerge_cells('A1:D1') # 拆分单元格
调整列宽和行高
ws.column_dimensions['A'].width = 20 # 调整列宽
ws.row_dimensions[1].height = 30 # 调整行高
添加和删除行列
ws.insert_rows(1) # 在第一行的位置插入一行
ws.delete_rows(3) # 删除第三行的行
ws.insert_cols(1) # 在第一列的位置插入一列
ws.delete_cols(3) # 删除第三列的列
边框设置
from openpyxl import Workbook
from openpyxl.styles import Border, Side
# 创建一个新的工作簿和工作表
wb = Workbook()
ws = wb.active
# 定义边框线属性
thin = Side(border_style="thin", color="000000")
thick = Side(border_style="thick", color="FF0000")
# 创建边框对象
border = Border(left=thin, right=thick, top=thin, bottom=thick)
# 将边框应用到单元格A1
ws['A1'].border = border
# 保存到文件
wb.save('border_example.xlsx')
字体设置
from openpyxl import Workbook
from openpyxl.styles import Font
# 创建一个新的工作簿和工作表
wb = Workbook()
ws = wb.active
# 定义字体样式
font = Font(name='Arial', size=14, bold=True, italic=True, color='FF0000')
# 将字体应用到单元格 A1
ws['A1'].font = font
ws['A1'].value = 'Hello, World!'
# 保存到文件
wb.save('font_example.xlsx')
背景设置
from openpyxl import Workbook
from openpyxl.styles import PatternFill
# 创建一个新的工作簿和工作表
wb = Workbook()
ws = wb.active
# 定义填充样式
fill = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")
# 将填充样式应用到单元格 A1
ws['A1'].fill = fill
# 保存到文件
wb.save('fill_example.xlsx')