python.openpyxl

下载和导包

pip install openpyxl

import openpyxl

导入将字母转换成数字,将数字转换成字母的包
from openpyxl.utils import get_column_letter,column_index_from_string

名词概念

工作薄(workbook)
表单(worksheet)
行、列、单元格(row、column、cell)

创建和打开EXCEL文件

# 创建一个excel文件,创建和打开不同,创建最后需要保存
wb = openpyxl.Workbook()
wb.save("test.xlsx")
# 打开一个excel文件
wb = openpyxl.load_workbook(文件路径)

EXCEL里表单的操作

1522840-20190830163437747-1726683714.png

以下所有操作都是基于打开或者创建一个excel文件之后的操作:

wb = openpyxl.load_workbook(文件路径)
方法应用场景使用案例运行结果
.create_sheet()创建表单wb.create_sheet("leesin") or (index=5,title='leesin')添加名为“leesin”新表单 or 创建为第五页表单
.remove_sheet() 删除表单 wb.remove_sheet(wb.get_sheet_by_name('表单名'))删除该表单
.sheetnames读取中所有表单名称 print(wb.sheetnames) 返回包含所有表单名称的list
.get_sheet_by_name()获取指定名称的表单 ws = wb.get_sheet_by_name("表单名称")将指定名称的表单赋值给ws
.active获取当前表单 ws = wb.active将当前工作表单赋值给ws
.title获取和更改当前活动表单的名称print(ws.title) or ws.title=“test1”返回当前表单的名称:test or 更改当前表单的名称为:test1
.row获取行数 print(sheet["B1"].row)打印B1所在的行数:1
.column获取列数 print(sheet["B1"].column)打印B1所在的列数:2
.coordinate获取坐标 print(sheet["B1"].coordinate) 打印B1的坐标:B1
.value获取值或者赋值 print(sheet["B1"].value) 打印B1的值:B1
.cell根据行、列定位坐标#.cell(row,column) print(sheet.cell(1,2).value)返回地一行第二列的值:B1

.rows 按行获取数值,将每行所有的值返回为元祖格式

for row in sheet.rows:
    print(row)
(<Cell 'test'.A1>, <Cell 'test'.B1>, <Cell 'test'.C1>, <Cell 'test'.D1>, <Cell 'test'.E1>, <Cell 'test'.F1>)
(<Cell 'test'.A2>, <Cell 'test'.B2>, <Cell 'test'.C2>, <Cell 'test'.D2>, <Cell 'test'.E2>, <Cell 'test'.F2>)
(<Cell 'test'.A3>, <Cell 'test'.B3>, <Cell 'test'.C3>, <Cell 'test'.D3>, <Cell 'test'.E3>, <Cell 'test'.F3>)
(<Cell 'test'.A4>, <Cell 'test'.B4>, <Cell 'test'.C4>, <Cell 'test'.D4>, <Cell 'test'.E4>, <Cell 'test'.F4>)
(<Cell 'test'.A5>, <Cell 'test'.B5>, <Cell 'test'.C5>, <Cell 'test'.D5>, <Cell 'test'.E5>, <Cell 'test'.F5>)
(<Cell 'test'.A6>, <Cell 'test'.B6>, <Cell 'test'.C6>, <Cell 'test'.D6>, <Cell 'test'.E6>, <Cell 'test'.F6>)
(<Cell 'test'.A7>, <Cell 'test'.B7>, <Cell 'test'.C7>, <Cell 'test'.D7>, <Cell 'test'.E7>, <Cell 'test'.F7>)
(<Cell 'test'.A8>, <Cell 'test'.B8>, <Cell 'test'.C8>, <Cell 'test'.D8>, <Cell 'test'.E8>, <Cell 'test'.F8>)
(<Cell 'test'.A9>, <Cell 'test'.B9>, <Cell 'test'.C9>, <Cell 'test'.D9>, <Cell 'test'.E9>, <Cell 'test'.F9>)

.columns 按列获取数值,将每列所有的值返回为元祖格式

for col in sheet.columns:
    print(col)
返回数据
 
A1
A2
A3
A4
A5
A6
A7
A8
A9
B1
B2
B3
B4
B5
B6
B7
B8
B9
C1
C2
C3
C4
C5
C6
C7
C8
C9
D1
D2
D3
D4
D5
D6
D7
D8
D9
E1
E2
E3
E4
E5
E6
E7
E8
E9
F1
F2
F3
F4
F5
F6
F7
F8
F9
  

设置单元格样式

单元格样式主要包括字体、边框、颜色以及对齐方式等,这些均位于openpyxl.styles库中

# 导入字体、边框、颜色以及对齐方式相关库from openpyxl.styles import Font, Border, Side, PatternFill, colors, Alignment

字体通过sheet单元格font属性设置字体风格

通过sheet单元格font属性设置字体风格

# 设置字体风格为Times New Roman,大小为16,粗体、斜体,颜色蓝色
sheet['A1'].font = Font(name='Times New Roman', size=16, bold=True, italic=True, color=colors.BLUE)

对齐方式

通过sheet单元格alignment属性设置文本对齐风格

# 通过参数horizontal和vertical来设置文字在单元格里的对齐方式,此外设置值还可为left和right
sheet['B1'].alignment = Alignment(horizontal='center',vertical='center')

边框

通过sheet单元格border属性设置字体风格

# 首先设置边框四个方向的线条种类
left, right, top, bottom = [Side(style='thin', color='000000')] * 4
# 再将各方向线条作为参数传入Border方法
sheet['C1'].border = Border(left=left, right=right, top=top, bottom=bottom)

设置行高和列宽

行和列的长度大小可以通过row_dimensions[序号].height和column_dimensions[标号].width来设置

# 设置行高
sheet.row_dimensions[1].height = 25

# 设置列宽
sheet.column_dimensions['D'].width = 15.5

合并和拆分单元格

对单元格的合并与拆分,主要是通过sheet的merge_cells(args1:args2)和unmerge_cells(args1:args2)两个方法来实现的

# 合并单元格
sheet.merge_cells('A1:B2')

# 拆分单元格
sheet.unmerge_cells('A1:B2')

转载于:https://www.cnblogs.com/youngleesin/p/11435611.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值