通过openpyxl模块对excel文件进行读写操作
官方:https://openpyxl.readthedocs.io/en/stable/
网友:https://blog.csdn.net/weixin_43094965/article/details/82226263
读取
import openpyxl
# 加载excel文件
file = 'abc.xlsx'
wb = openpyxl.load_workbook(file)
# 读取指定工作表
sheet = wb['sheet表名称']
# 读取所有工作表
sheet_all = wb.sheetnames # 生成列表 ['sheet1','sheet2',...]
# 读取单元格
a1_cell = sheet['a1']
a1_cell = sheet.cell(row = 1, column = 1)
## 生成元组
# 获取单元格的值
a1_val = a1_cell.value
print(a1_val)
获取最大行号
import openpyxl
wb = openpyxl.load_workbook('write.xlsx')
sheet = wb['sheet1']
max_num = sheet.max_row
x = sheet['b'+str(max_num)].value # 取b列最后一行的值
遍历列,行
import openpyxl
wb = openpyxl.load_workbook('write.xlsx')
sheet = wb['sheet1']
for i in sheet['a']: # 遍历a列, 这里得到的i是元组
print(i.value)
for i in sheet[1]: # 遍历第1行, 得到的i也是元组 (1就是第1行,不用从0开始数)
print(i.value)
# 下面的方法实现的结果和上面是一样的
# sheet.rows 读取excel的每一行数据
# row = list(sheet.rows)[i] 读取第i行的数据
# row.value 元组转换成值
# sheet.columns 读取excel的每一列数据
# column = list(sheet.columns)[i] 读取第i列的数据
# column.value 元组转换成值
for row in list(sheet.rows)[0]: # 遍历第1行
print(row.value)
for column in list(sheet.columns)[0]: # 遍历第1列
print(column.value)
返回值所在的行号/列号/坐标
import openpyxl
wb = openpyxl.load_workbook('write.xlsx')
sheet = wb['sheet1']
a1_cell = sheet['a1'] # 这里还是元组, 如果转换成value就不能获取了
a1_row = a1_cell.row
a1_column = a1_cell.column
a1_coordinate = a1_cell.coordinate
数据写入单元格
import openpyxl
wb = openpyxl.Workbook() # 创建空白工作簿
sheet = wb.active # 获取活动的工作表, 默认为第一个sheet
sheet.title = '工作表' # 工作表重命名
# 写入某个单元格
sheet['a1'] = '我'
sheet.cell(row=5, column=5, value='这也是我输入的')
sheet.cell(row=5, column=5).value='输入')
# 写入一行
row = ['a','b','c']
sheet.append(row)
# 从第1行写入多行数据
rows = [['a','b'],['wang','12'],['zhang','22']]
for i in rows: # 一个list写入一行
sheet.append(i)
# 从第4行写入多行数据
rows = [['a','b'],['wang','12'],['zhang','22']]
sheet['a3']='下面开始写入'
for i in rows: # 一个list写入一行
sheet.append(i)
# 保存文件
wb.save('write.xlsx')
创建新sheet
import openpyxl
wb=openpyxl.load_workbook('new.xlsx')
wb.create_sheet(title='SheetName')
wb.save('new.xlsx')
样式修改
单元格样式
from openpyxl.styles import Font,Alignment
font = Font(name = '等线',bold = False, size = 10, color='2e75b5')
alignment = Alignment(horizontal='center',vertical='center',wrap_text=False)
for cell in sheet1['a1':'b10']:
for i in cell:
i.font = font
i.alignment = alignment
sheet颜色
ws.sheet_properties.tabColor = "1072BA"