该文档仅支持2007版以上的excel(及后缀为:.xlsx的文件)
创建表
OpenPyXl文档说明:https://openpyxl.readthedocs.io/en/latest/index.html
一:安装OpenPyXl
pip install openpyxl
二:创建一个工作簿实例
from openpyxl import Workbook # 引入模块
wb = Workbook() # 创建一个工作簿实例,默认里面有一个表
三:查看薄中所有的表
print(wb.sheetnames) # 打印薄中所有表的名称,输出的值为列表
openpyxl.workbook.Workbook.sheetnames()
该属性所在的位置
四:创建表
ws1 = wb.create_sheet("Mysheet") # 在末尾插入"Mysheet"表 (默认)
ws2 = wb.create_sheet("Mysheet", 0) # 插入到指定的位置,0代表第一个位置
openpyxl.workbook.Workbook.create_sheet()
该属性所在的位置
五:获取薄中的表
ws = wb.active # 获取薄中的第一个表
ws = wb['Sheet'] # 获取名称为‘Sheet’的表
六:修改指定的表
ws.title = "New Title" # 更改表的名字
ws.sheet_properties.tabColor = "1072BA" # 设置表的标签颜色,默认为白色,颜色为RGB代码
七:创建副本
source = wb.active # 创建一个实例
target = wb.copy_worksheet(source) # 创建副本(复制)
openpyxl.workbook.Workbook.copy_worksheet()
该属性所在的位置
八:保存薄
wb.save('test.xlsx') # 保存到文件,path为路径
保存时,若文件存在,则替换里面的内容,若不存在则创建一个新文件
操作表
一:打开一个薄,并获取特定的表
wb = openpyxl.load_workbook('test.xslx',guess_types = True) # 打开已存在的薄
ws = wb.active
guess_types
是否启用数据类型,默认不启用
data_only
是否带有公式(不明白什么意思)
keep_vba
是否保留视觉基本元素,默认保留
二:操作单元格的值
1.# 直接修改单元格的值
ws['A1'] = 123
3.# 通过value属性来修改值
a = ws['A1']
a.value = 456
3.# 通过函数来修改值
ws.cell(row = 1,column = 1 ,value = '123') # 修改第一行第一列单元格的值
ws.cell(1, 1, '123') # 修改第一行第一列单元格的值(简写)
4.# 获取单元格的值
a = ws['A1']
print(a.value)
print(ws['A1'].value)
row
:行号,column
:列号(数字格式),value
:要修改的值
三:通过切片访问单元格的范围
print(ws['a1:c4']) # 打印出范围内的所有单元格
print(ws['a']) # 打印A列所有活动的单元格
print(ws['a':'c']) # 打印A列到C列所有活动的单元格
print(ws[10]) # 打印所有活动列的第10行
print(ws[1:10]) # 打印所有活动列的1-10行,按行排序(A1,B1,C1....A2,B2,C2....)
四:通过内置函数切片
1.# 第一种方法:按照行排序
for row in ws.iter_rows(min_row=1, max_row=2, min_col = 2 ,max_col=3):
for cell in row:
print(cell)
输入结果:
<Cell '2007测试表'.B1>
<Cell '2007测试表'.C1>
<Cell '2007测试表'.B2>
<Cell '2007测试表'.C2>
openpyxl.worksheet.Worksheet.iter_rows()
该属性所在的位置
2.# 第二种方法:按照列排序
for col in ws.iter_cols(min_row=1, max_row=2, min_col = 2 ,max_col=3):
for cell in col:
print(cell)
输入结果:
<Cell '2007测试表'.B1>
<Cell '2007测试表'.B2>
<Cell '2007测试表'.C1>
<Cell '2007测试表'.C2>
openpyxl.worksheet.Worksheet.iter_cols()
该属性所在的位置
五:遍历所有活动的单元格
print(list(ws.columns)) # 以 列 输出所有活动的单元格
print(list(ws.rows)) # 以 行 输出所有活动的单元格
由于返回的是一个对象,需要通过list转为列表来显示
openpyxl.worksheet.Worksheet.rows()
该属性所在的位置
openpyxl.worksheet.Worksheet.columns()
该属性所在的位置
六:合并拆分单元格
ws.merge_cells('A2:D2') # 合并单元格
ws.unmerge_cells('A2:D2') # 拆分单元格