-
openpyxl模块
- 创建文件
- 写数据
- 读数据
openpyxl模块理论前戏
1.excel文件的后缀名针对版本的不同是不同的 03版本之前:.xls 03版本之后:.xlsx 2.在python能够操作excel表格的模块 1.openpyxl模块 该模块可以操作03版本的之后的文件 针对03版本之前的兼容性可能不太好 2.xlrd、xlwt模块 xlrd控制读文件 xlwt控制写文件 该模块可以操作任何版本的excel文件
额外知识
# excel本质并不是一个文件 修改excel文件后缀名至.zip即可查看
创建文件
from openpyxl import Workbook # 1.创建一个对象 wb = Workbook() # 2.保存文件 wb.save(r'aaa.xlsx')
"""在使用openpyxl模块操作excel文件的时候一定要确保文件是关闭状态"""
创建多个工作簿
# wb.create_sheet('学生表') # wb = wb.create_sheet('工作表') # 还可以指定工作簿的顺序 wb.create_sheet('老师表', 0)
其他知识
wb1 = wb.create_sheet('学生表') wb2 = wb.create_sheet('工作表') w3 = wb.create_sheet('老师表', 0) # create_sheet方法会返回当前被创建的工作簿对象 w3.title = '教师表' # 工作簿名称支持二次修改
修改工作簿名称样式
w3.sheet_properties.tabColor = "1072BA"
查看当前excel文件所有的工作簿名称
print(wb.sheetnames)
如何写数据
方式一
from openpyxl import Workbook wb = Workbook() wb1 = wb.create_sheet('数据统计', 0) # 写入数据 wb1['A1'] = 111 wb1['A2'] = 222 wb.save(r'bbb.xlsx')
方式二
from openpyxl import Workbook wb = Workbook() wb1 = wb.create_sheet('数据统计', 0) # 写入数据 wb1.cell(column=1, row=3, value=333) # cell意思是单元格 wb.save(r'bbb.xlsx')
方式三
from openpyxl import Workbook wb = Workbook() wb1 = wb.create_sheet('数据统计', 0) # 写入数据 wb1.append(['序号', '姓名', '年龄', '性别']) # 定义表头数据 wb1.append([1, 'jason', 28, 'male']) # 存储表单数据 wb1.append([2, 'tony', 38, 'female']) # 存储表单数据 wb1.append([3, 'kevin', 28, 'male']) # 存储表单数据 """ append是按照行数一行行录入数据 """ wb.save(r'bbb.xlsx')
注意事项
# 有几个字段就写几个内容,可用空代替 wb1.append([4, 'kevin1', 'male']) # 存储表单数据 wb1.append([5, 'kevin2', 'female']) # 存储表单数据 # 如何解决 wb1.append([5, 'kevin2', '', 'female']) # 存储表单数据 wb1.append([5, 'kevin2', 88, None]) # 存储表单数据
如何读数据
方式一
from openpyxl import load_workbook # 1.指定要读取的表格文件 wb = load_workbook(r'bbb.xlsx',) # 2.先查看工作簿名称 并指定你要操作的工作簿print(wb.sheetnames) # ['数据统计', 'Sheet'] # 3.指定操作的工作簿 wb1 = wb['数据统计'] # wb1指代的就是数据统计的工作簿 # 读取数据 print(wb1['B2'].value) # 获取普通数据
注意事项
如果在读取数据的时候不想获取公式本身而是公式的结果需要指定data_only参数
wb = load_workbook(r'2.xlsx', data_only=True) print(wb.sheetnames) # ['数据统计', 'Sheet'] wb1 = wb['数据统计'] # wb1指代的就是数据统计的工作簿 print(wb1['B2'].value) # 获取普通数据 print(wb1['A9'].value) # 获取公式 =SUM(A2:A8)
方式二
print(wb1.cell(row=3, column=2).value)
获取每行和每列数据
# for row in wb1.rows: # for r in row: # print(r.value) # for col in wb1.columns: # for c in col: # print(c.value) # 获取最大的行数和列数 print(wb1.max_row) # 9 print(wb1.max_column) # 4