python操作excel初体验

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])

你可能感兴趣的:(python,python,excel)