Python3 处理excel文件(openpyxl库)

openpyxl 介绍

openpyxl是一个用于读/写 XLSX/XLSM/XLTX/XLTM文件的python库。openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件;2007以下的版本为xls后缀的文件,需要使用 xlrd和xlwt库进行操作。虽然xlrd和xlwt也可以进行文件读写,但是感觉不能对一个文件同时进行读写操作,我用的时候感觉不是很方便,用openpyxl库可以对一个文件同时进行读写操作(这里的同时指的是在一个py文件只打开关闭一次文件,但可以进行读和写操作,不涉及多线程)

openpyxl 基本操作

新建文件、加载已有文件

import openpyxl
# 如果openpyxl不存在,在cmd中执行 pip insatll openpyxl下载库

# 新建一个空excel,文件名为test,表名为sheet(默认创建),
wb = openpyxl.Workbook()  # 创建新的excel文件,一个工作簿(workbook)在创建的时候同时至少也新建了一张工作表(worksheet)
wb.save('test.xlsx')
# 载入已存在的xslx文件
wb = openpyxl.load_workbook("test.xlsx")

表操作

wb.create_sheet("my_sheet1") # 给文件添加指定名称的工作表
wb.create_sheet(index=1, title="my_sheet2") # 可通过index控制创建的表的位置, index从0开始
sheet_names = wb.sheetnames# 得到工作簿的所有工作表名 结果: ['Sheet','my_sheet2','my_sheet1']
# 根据表名获取工作表
sheet = wb["my_sheet1"]
# 根据表名删除sheet表
wb.remove(wb["my_sheet1"])

读数据

max_row = sheet.max_row # 最大行数
max_col = sheet.max_column # 最大列数
value = sheet.cell(row=1, column=1).value # 获取第1行第1列位置的数据,坐标最小从1开始[xlrd和xlwt是从0开始,要注意一下]
value = sheet["A1"].value # 获取A列第一个数据
list_row = sheet[1] # 获取第一行数据,行数最小从1开始,数据单元类型为openpyxl.cell.cell.Cell,读取值需要list_row[0].value
list_col = sheet['A'] # 获取A列的数据

写数据

sheet.cell(row=1,column=1,value=1) # 在sheet工作表(1,1)位置写1
sheet["B1"] = "B1"  # 直接修改B1列第1个单元格的值为B1
sheet["B2"] = "B2"  # 新增B2单元格的值为B2
wb.save("test.xlsx") # 最后要保存才有效果

调整表格样式

# ------------------ 表格样式调整 ------------------
# 表格样式支持:字体、颜色、模式、边框、数字格式等
# A1单元格 等线24号加粗斜体,字体颜色浅蓝色
sheet["A1"].font = openpyxl.styles.Font(name="宋体", size=24, italic=True, color="00CCFF", bold=True)
# B1单元格 水平上下居中
sheet["B1"].alignment = openpyxl.styles.Alignment(horizontal="center", vertical="center")
# 第一行高度设置为30
sheet.row_dimensions[1].height = 30
# C列的宽度设置为35
sheet.column_dimensions["C"].width = 35
wb.save("test.xlsx")

如有不当之处,欢迎指出,谢谢!

参考链接

posted @ 2021-01-27 12:23  FZU_WSH  阅读(622)  评论(0编辑  收藏  举报