Python openpyxl模块简单介绍
openpyxl
openpyxl模块属于第三方模块,是一个在 python 中能够处理 excel 文件的模块,还有比较出名的是xlrd、xlwt 分别控制excel文件的读写,这俩个能够兼容所有版本的文件。openpyxl 针对 excel 2003版本之前的兼容性可能不好 但是功能更加强大。
excel文件的版本及后缀
2003版本之前 excel的文件后缀是xls
2003版本之后 excel的文件后缀是xlsx、csv
创建文件
Workbook() —创建 excel 文件
使用 openpyxl 创建文件。只需导入Workbook类
from openpyxl import Workbook
wb = Workbook()
# 一个 excel 文件创建成功
Workbook.create_sheet() —创建 excel 工作簿
Workbook.create_sheet() 可以创建自定义名称的工作簿。括号里的参数是工作簿名称,还有一个参数是工作簿的位置,也可以不写
from openpyxl import Workbook
wb = Workbook()
ws1 = wb.create_sheet('用户信息表', 0) # 创建了一个用户信息表并放在第一位,如下图
Sheet 工作簿是自动生成的
可以创建多个工作簿,并且它们按顺序排列。
Worksheet.title —给工作簿重命名
使用 Worksheet.title属性更改表名称
from openpyxl import Workbook
wb = Workbook() # 创建 excel 文件
ws1 = wb.create_sheet('用户信息表', 0) # 创建工作簿用户信息表放在第一位
ws2 = wb.create_sheet('bank_info') # 创建工作簿bank_info
ws1.title = 'user_info' # 更改工作簿用户信息表的名称
'''用代码保存一下后,如下图所示'''
用户信息表 被改名成 user_info
ws.sheet_properties.tabColor = ” ” 修改标题背景
from openpyxl import Workbook
wb = Workbook()
ws1 = wb.create_sheet('用户信息表', 0)
ws1.sheet_properties.tabColor = 'FF6666' # 将标题背景改为指定RRGGBB颜色代码
'''用代码保存一下后,如下图所示'''
变得更好看了…
Workbook.sheetname —查看 excel 所有工作簿
返回包含 excel 文件下所有工作簿名称的列表
from openpyxl import Workbook
wb = Workbook()
ws1 = wb.create_sheet('用户信息表', 0)
print(wb.sheetnames)
打印结果 ['用户信息表', 'Sheet']
Workbook.copy_worksheet() —创建工作表的副本
Workbook.copy_worksheet()方法可以在单个工作簿中创建工作表的副本。 仅复制单元格(包括值、样式、超链接和注释)和某些工作表属性(包括尺寸、格式和属性)。不会复制所有其他工作簿/工作表属性 – 例如图像、图表。
获取修改数据
访问一个单元格
在 excel 中可以通过位置找到里面的内容,同样使用代码也能通过位置找到内容。
Worksheet[ ]
from openpyxl import Workbook
wb = Workbook()
ws1 = wb.create_sheet('用户信息表', 0)
ws1['A1'] = 'XWenXiang' # ws1['A1'] 代表的是该表中的 A1 位置,我们可以将数据直接赋值给它
'''用代码保存一下后,如下图所示'''
此时的 A1 被填入内容 XWenXiang
Worksheet.cell()
----'除了直接获取位置还可以使用 Worksheet.cell()方法'-----
from openpyxl import Workbook
wb = Workbook()
ws1 = wb.create_sheet('用户信息表', 0)
ws1.cell(row=4, column=2, value=10)
此方法是通过指定坐标的方式赋值,其中 row 参数代表行数, column 代表列数,value 是填入的数据。
'''用代码保存一下后,如下图所示'''
在第2列第4行的位置填入数字10
Worksheet.append()
Worksheet.append() 可以同时写入多个数据。
from openpyxl import Workbook
wb = Workbook()
ws1 = wb.create_sheet('用户信息表', 0)
ws1.append(['name', 'age', 'gender'])
ws1.append(['XWenXiang', '15', 'man']) # 要用 [] 括起来
'''用代码保存一下后,如下图所示'''
批量写入数据,重复数据还可以加一个循环写入。
公式
模块里使用的公式和 excel 中的公式是一样的
ws1['A6'] = '=sum(A4:A5)' # 对A4和A5进行求和并写入到A6
访问多个单元格
可以使用切片访问单元格范围
x = ws['A1':'C2']
x1 = ws['C']
x2 = ws['C:D']
x3 = ws[10]
x4 = ws[5:10]
Worksheet.values —获取单元格值
from openpyxl import Workbook
wb = Workbook()
ws1 = wb.create_sheet('用户信息表', 0)
ws1.append(['name', 'age', 'gender'])
ws1.append(['XWenXiang', '15', 'man'])
for row in ws1.values:
print(row)
打印结果:
('name', 'age', 'gender')
('XWenXiang', '15', 'man')
保存文件
保存工作簿最简单、最安全的方法是使用 对象的 Workbook.save() 方法 Workbook。
在前面的代码示例都没有将保存代码加入。
wb = Workbook()
wb.save('balances.xlsx') # balances.xlsx 是保存的路径,也就是文件名。
编辑完要保存才行。
打开文件
openpyxl.load_workbook() —读取 excel 文件
和 Workbook 写入一样,使用 openpyxl.load_workbook() 可以打开现有工作簿。
from openpyxl import load_workbook # 导入 load_workbook
wb = load_workbook('ex_a.xlsx', read_only=True, data_only=True) # ex_a.xlsx是文件名
print(wb.sheetnames) # 打印所有工作簿的名称
读取工作簿数据
方式一
from openpyxl import load_workbook
wb = load_workbook('ex_a.xlsx', read_only=True, data_only=True)
ws = wb['用户信息表'] # 拿到工作薄对象
print(ws['A1'].value) # 取出工作薄对象中 A1 位置的值
方式二
from openpyxl import load_workbook
wb = load_workbook('ex_a.xlsx', read_only=True, data_only=True)
ws = wb['用户信息表']
print(ws.cell(row=2, column=1).value) # 通过行与列的形式来取值
方式三(逐行读取)
from openpyxl import load_workbook
wb = load_workbook('ex_a.xlsx', read_only=True, data_only=True)
ws = wb['用户信息表']
for row in ws.rows: # 获取每一行的数据
for data in row: # 获取每一行中单元格的数据
print(data.value) # 打印单元格的值
微信赞赏支付宝赞赏