openpyxl笔记
openpyxl由
Charlie Clark和Eric Gazoni联合开发,
专门用来处理Excel电子表格的Python第三方库
openpyxl
库可以处理Excel2010以后的电子表格格式,包括:xlsx/xlsm/xltx/xltm
import openpyxl
# 通过文件路径,打开工作簿
wb1 = openpyxl.load_workbook('./demo.xlsx')
# 用 Workbook() 创建新工作簿
wb2 = openpyxl.Workbook()
from openpyxl import load_workbook, Workbook
# 通过文件路径,打开已有工作簿
wb1 = load_workbook('./demo_excel.xlsx')
# 用 Workbook() 创建新工作簿
wb2 = Workbook()
保存工作簿:
from openpyxl import Workbook
# 新建工作簿
new_wb = Workbook()
# 将新建的工作簿保存为
new_wb.save('./new.xlsx')
工作簿对象有一个常用的属性active
,语法为工作簿对象.active
,这个属性可以获取到工作簿中活动的工作表对象
from openpyxl import load_workbook
# 打开mou工作簿
staff_wb = load_workbook('./material/mou.xlsx')
# 获取活动工作表
active_ws = staff_wb.active
按表名取表:
from openpyxl import load_workbook
# 打开【mou.xlsx】工作簿
staff_wb = load_workbook('./material/mou.xlsx')
# 按表名取表
a_ws = staff_wb['sheet1_name']
b_ws = staff_wb['sheet2_name']
获取单行或列:
在openpyxl中,我们可以通过工作表对象[行数]
或工作表对象['列名']
的方式获取到一个tuple,这个tuple中包含了指定行或列中的所有数据。获取cell对象
# 打印获取到的第五行数据
print(active_ws[5])
# 打印获取到的第二列数据
print(active_ws['B'])
获取多行数据:
用方法iter_rows(),返回n个tuple,每个tuple代表表格中的一行
active_ws.iter_rows(min_row,max_row,min_col,max_col,values_only=False)
#values_only是否返回单元格值,True:返回单元格值,False返回单元格对象
#只读时设置True,写入时设置False
for row in a_ws.iter_rows(min_row=2, max_row=12, min_col=2, max_col=3, values_only=True):
print(row)
#1就是第一,没有0
追加数据:
使用append()追加一行数据,list或tuple
注意追加完之后要save()
active_ws.append(info_list)
active_ws.append(info_tuple)
# 保存工作簿为new.xlsx
staff_wb.save('./new.xlsx')
获取单元格对象:
方法1:通过iter_rows()
来获取指定范围的行,再通过索引从行中取出单元格对象,values_only设为False
for row in a_ws.iter_rows(min_row=2, max_row=12, min_col=2, max_col=3):
print(row)
方法2:for cell in 工作表对象[行数];for cell in 工作表对象['列名']
for row_cell in staff_ws[3]:
print(row_cell)
# for循环遍历,取出第三列(C列)的所有单元格对象
for col_cell in staff_ws['C']:
print(col_cell)
方法3:通过单元格坐标
staff_ws = staff_wb.active
# 打印单元格对象A1
print(staff_ws['A1'])
单元格对象的基本操作:
# 获取单元格的值
单元格对象.value
# 给单元格对象赋值
单元格对象.value = 值
# 打印单元格对象C2的值
print(staff_ws['C2'].value)
# 修改单元格对象C2的值为10000
staff_ws['C2'].value = 10000