from openpyxl import load_workbook
from openpyxl.styles import Alignment
from openpyxl import Workbook
创建保存
# 创建excel 如果文件已存在,该方法会覆盖原内容,慎用
wb = Workbook('new1.xlsx')
wb.save('new1.xlsx')
加载
# 加载已存在的excel, 更新里面的内容,不会清除原内容,文件不存在时抛出异常
wb = load_workbook('new.xlsx')
# wb.create_sheet('sh3',2)
# wb.remove(wb['sh31']) # 参数必须为sheet对象
# print(wb.active)
print(wb.sheetnames) # 获取所有的sheetnames列表
wb.copy_worksheet(wb['sh2'])
wb.save('new.xlsx')
wb属性和方法
- active属性: xlsx文件保存时所处的sheetname,默认为第一个sheet对象
- sheetnames属性: excel文件里所有sheet名称组成的列表
- get_sheet_names()方法: 同上,新版本废弃
- **create_sheet(‘sheet_name’, order)**方法: 创建sheet页,第一参:sheet名字, 第二参:sheet插入的位置
- remove(sheet)方法: 用于移除一个sheet页, 需传入一个sheet对象
- wb[‘sheet_name’]: 根据sheet页的名字获取对应的sheet对象
- get_sheet_by_name(‘sheet_name’)方法: 同上,新版本将废弃
- copy_worksheet(source): 以某个sheet页作为模板,复制生成一个新的sheet页,仅限单个文件里复制
ws属性和方法:
- ws.active_cell属性: 当前激活的cell位置
- cell(row, column, value=None): 获取某个cell对象,或者给指定cell赋值,编号从1开始
- rows: 返回以每一行cell对象组成的元组,多行元组组成的可迭代对象
- columns: 返回以以每一列cell对象组成的元组,多行元组组成的可迭代对象
- 索引和范围访问:
- ws[‘A2’]: 返回一个cell对象
- ws[‘A’]: 返回A列所有的值
- ws[n]: 返回第N行所有值
- ws[‘C:E’]: 获取C-E的所有值
- ws[1:3] 获取1-3行的所有值
- ws[‘A1’:‘E2’]: 获取A1-E2范围内的所有cell对象,以行为单位的所有cell对象的元组
- ws.iter_rows(min_row=None, max_row=None, min_col=None, max_col=None): 设置一个最小最大的行列范围,来创建多个cell对象或获取这个范围内的cell对象组成的迭代对象
- ws.iter_cols(min_row=None, max_row=None, min_col=None, max_col=None): 设置一个最小最大的行列范围,来创建多个cell对象或获取这个范围内的cell对象组成的迭代对象
- values: 返回sheet页中每一行cell对象内的值组成的可迭代对象
- merge_cells() 合并单元格
- unmerge_cells() 拆分单元格
- delete_rows() 删除行
- delete_column() 删除列
- insert_rows() 插入行
- insert_cols() 插入列
Alignment对象: 用于设置cell对齐方式
from openpyxl.styles import Alignment
alignment = Alignment(horizontal='center', vertical='center')
ws.cell(1, 3).alignment = alignment
column_dimensions: 设置单元格宽度
ws.column_dimensions['D'].width = 12
wb = load_workbook('new1.xlsx')
ws = wb.active
# print(ws.active_cell)
# print(ws.cell(2, 2))
# print(ws.cell(2, 2, '4523'))
# print(ws.cell(2, 2).value)
# print(list(ws.rows)) # 先行 后列
# print(list(ws.columns)) # 先列 后行
# ws.insert_rows(0)
# ws.insert_cols(3)
# ws['C2'].value = '补贴'
# # print(list(ws.values))
# for i in range(1, len(list(ws.columns))+1):
# if i in (3,4):
# continue
# else:
# value = ws.cell(row=2, column=i).value
# ws.merge_cells(start_row=1,end_row=2,start_column=i,end_column=i)
# ws.cell(1, i, value=value)
# ws.merge_cells(start_row=1, end_row=1, start_column=3, end_column=4)
# ws.cell(1,3,'合并')
alignment = Alignment(horizontal='center', vertical='center')
for i in range(1, len(list(ws.columns))+1):
if i in (3,4):
continue
else:
ws.cell(1, i).alignment = alignment
ws.cell(1, 3).alignment = alignment
wb.save('new1.xlsx')
wb = load_workbook('new1.xlsx')
ws = wb.active
for i in list(ws.iter_rows(min_row=1,max_row=2)):
print(i)
for i in list(ws.values):
print(i)
print(ws[1:2])