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")
如有不当之处,欢迎指出,谢谢!