openpyxl库学习笔记
1.Excel读取操作
-
获取Excel文件:
from openpyxl import load_workbook #导入相关函数
path = r"文件路径\文件名.xlsx".replace('\\', '/') #设置文件路径
data = load_workbook(path) #获取workbook对象
-
获取工作表Sheet:
# 获得所有sheet的名称
print(data.get_sheet_names())
# 根据sheet名字获得sheet
sheet = data.get_sheet_by_name('Sheet1') #这种方法官方已经不推荐使用了
sheet = data["Sheet1"] #正确操作
-
获取单元格:
# 获取某个单元格的值,观察excel发现也是先字母再数字的顺序,即先列再行
b4 = sheet['B4']#b4为<Cell 'Sheet1'.B4>
#要获取B4单元格里的内容,操作如下:
print(b4.value)
#获取b4单元格的列、行、以及内容
print(f'({b4.column}, {b4.row}) is {b4.value}') # 返回的数字就是int型
# 除了用下标的方式获得,还可以用cell函数, 换成数字,这个表示B2
b4_too = sheet.cell(row=4, column=2)
print(b4_too.value)
-
获取最大行和最大列
print(table.max_row,table.max_column)
-
迭代行和列
sheet.rows为生成器, 里面是每一行的数据,每一行又由一个tuple包裹。
sheet.columns类似,不过里面是每个tuple是每一列的单元格
#获取每一行后,再获取每一行的每个单元格的内容
for row in sheet.rows:
for cell in row:
print(cell.value)
#获取每一列后,再获取每一列的每个单元格的内容
for column in sheet.columns:
for cell in column:
print(cell.value)
-
单元格切片操作:
#获取单元格'B1'到"B44"的内容
for i in table['B1':"B44"]:#i是一个tutple对象
for j in i:#所以再次对i进行迭代
print(j.value)
#获取单元格'A1'到"B44"的内容
for i in table['A1':"B44"]:
for j in i:
print(j.value)
2.Excel写入操作:
# 直接给单元格赋值也可以
sheet['A1'] = 'good'
#给'C2'到'C44'单元格写入数字 1
for i in table['C2':'C44']:
for cell in i:
cell.value = "1"
3.单元格样式设置:
from openpyxl.styles import Font, colors, Alignment #导入相关函类
#字体:
bold_itatic_24_font = Font(name='等线', size=24, italic=True, color=colors.RED, bold=True)
sheet['A1'].font = bold_itatic_24_font
#上面的代码指定了等线24号加粗斜体,字体颜色红色。直接使用cell的font属性,将Font对象赋值给它。
#对齐方式:
# 设置B1中的数据垂直居中和水平居中
sheet['B1'].alignment = Alignment(horizontal='center', vertical='center')
#上面代码直接使用cell的属性aligment,这里指定垂直居中和水平居中。
#设置行高和列宽:
# 第2行行高
sheet.row_dimensions[2].height = 40
# C列列宽
sheet.column_dimensions['C'].width = 30
4.最后保存文件
sheet.save(path)
|