本文介绍使用openpyxl操作excel。操作excel的库有多个,具体的优缺点比较在文末。
1.创建excel文件
file = Workbook()
2.对已存在文件进行操作?
# 文件路径
xlsx_path= 'test.xlsx'
#openpyxl读取xlsx文件
file=openpyxl.load_workbook(xlsx_path)
3.获取工作表?
#active方法默认获取工作簿的第一张工作表
sheet=file.active
#通过工作表名获取指定工作表
sheet=file["Sheet1"]
4.对单元格进行操作?
# 写入单元格
cell = sheet['A1']
cell.value = '家庭理财管理系统'
5.写入一行或多行数据
#写入1行数据
data1 = ["系统管理员", "","","家庭管理员","","", "普通用户"]
sheet.append(data1)
#写入多行数据
data2 = [["收支管理","","账务总览","","统计报表","","用户管理"], ["收入管理", "支出管理", "活期资产","负债资产","理财详情","产品推荐","角色管理","家庭成员管理"]]
for data in data2:
sheet.append(data)
6.指定范围输出
# 指定坐标范围的值
rows = sheet['A1:B2']
print("坐标范围:")
for row in rows:
for cell in row:
print(cell.value,end=' ')
print()
7.按列输出?
print("指定列:")
cells = sheet['A']
for cell in cells:
print(cell.value,end=' ')
print()
print("指定列范围:")
cols = sheet['A:B']
for col in cols:
for cell in col:
print(cell.value,end=' ')
print()
8.按行输出?
print("指定行:")
cells = sheet[1]
for cell in cells:
print(cell.value,end=' ')
print()
print("指定行范围:")
rows = sheet[1:2]
for row in rows:
for cell in row:
print(cell.value,end=' ')
print()
?
9.样式?
# 字体样式
cells = sheet['1']
font = Font(
name='Bradley Hand ITC', #字体名字
size=12,#字体大小
bold=True,#是否加粗
italic=False,#斜体
underline='none',#下划线
color='0000FF'#字体颜色
)
for cell in cells:
cell.font = font
# 段落对齐
rows = sheet[1:2]
alignment = Alignment(
horizontal='center',#水平
vertical='center',#垂直
text_rotation=0,#旋转角度
wrap_text=True#是否自动换行
)
for row in rows:
for cell in row:
cell.alignment = alignment
# 边框样式
cells = sheet['4']
#style 参数的种类: 'double, 'mediumDashDotDot', 'slantDashDot',
#'dashDotDot','dotted','hair', 'mediumDashed, 'dashed', 'dashDot', 'thin',
#'mediumDashDot','medium', 'thick'
side1 = Side(
style='thin', #边框样式
color='0000FF'#边框颜色
)
side2 = Side(
style='thick', #边框样式
color='0000FF'#边框颜色
)
border = Border(
left=side1, #左边线样式
right=side1,#右边线样式
top=side2, #上边线样式
bottom=side2#下边线样式
)
for cell in cells:
cell.border = border
# 填充颜色
pattern_fill = PatternFill(
fill_type="solid",#填充样式
fgColor="99CCFF"#填充颜色
)
gradient_fill = GradientFill(stop=("FFFFFF","99CCFF","000000"))#渐变颜色1,2,3...
rows=sheet[2:4]
for row in rows:
for cell in row:
cell.fill = pattern_fill
cells=sheet[1]
for cell in cells:
cell.fill = gradient_fill
#设置行高和列宽
# 设置第 1 行的高度
sheet.row_dimensions[1].height = 50
# 设置 h4 的宽度
sheet.column_dimensions["H"].width = 13
#合并与取消合并单元格
#sheet.merge_cells("A1:H1")
sheet.merge_cells(start_row=1,#起始行号
start_column=1,#起始列号
end_row=1,#结束行号
end_column=8#结束列号
)
sheet.merge_cells(start_row=2,#起始行号
start_column=1,#起始列号
end_row=2,#结束行号
end_column=3#结束列号
)
sheet.merge_cells(start_row=2,#起始行号
start_column=4,#起始列号
end_row=2,#结束行号
end_column=6#结束列号
)
sheet.merge_cells(start_row=2,#起始行号
start_column=7,#起始列号
end_row=2,#结束行号
end_column=8#结束列号
)
#取消合并 unmerge_cells()
10.保存文件?
file.save('practice.xlsx')
效果如下图:?
?不同模块操作excel对比如下:?
本人小白一枚,欢迎大家一起探讨,有问题评论区留言哦!?
创作不易,喜欢的给个赞呗!
|