1.工作簿

1.1工作簿基本操作

1.1.1创建工作簿

  1. import openpyxl
  2. 工作簿=openpyxl.Workbook('文件名称.xlsx')

1.1.2打开工作簿

  1. 工作簿 =openpyxl.load_workbook('文件名称.xlsx')

1.1.3常用方式

  1. import openpyxl
  2. #定义路径
  3. file1 = r'd:/工作簿1.xlsx'
  4. #打开工作簿
  5. workbook1 = openpyxl.load_workbook(file1)
  6. #指定工作表
  7. sheet1 = workbook1['sheet1']
  8. #保存到原路径
  9. workbook1.save(file1)

1.2方法

方法 作用
工作簿.sheetnames 获取所有表格的名称
工作簿[‘工作表名’] 通过表格名称获取Worksheet对象
工作簿.active 获取活跃的表格
remove 删除一个工作表对象【对象】
create_sheet 创建一个空的表格【表名】
copy_worksheet 在Workbook内拷贝表格【对象】

2.工作表

2.1从工作簿中获取工作表

2.1.1激活第一个工作表

  1. sheet1 = 工作簿.active

2.1.2获取工作簿名称

  1. # 工作表.title
  2. print (sheet1.title)

2.1.3指定工作表

  1. sheet2 = 工作簿 ['工作表名称']

2.1.4新建指定工作表

  1. sheet3 = 工作簿.create_sheet('sheet3')

2.1.5删除指定工作表

  1. 工作簿.remove(sheet3)

2.2 方法

属性 作用
title 工作表的名称
dimensions 表格的大小,这里的大小是指含有数据的表格的大小,即:左上角的坐标:右下角的坐标
max_row 表格的最大行
min_row 表格的最小行
max_column 表格的最大列
min_column 表格的最小列
rows 按行获取单元格(Cell对象) - 生成器 工作表.rows
columns 按列获取单元格(Cell对象) - 生成器 工作表.columns
freeze_panes 冻结窗格 工作表.freeze_panes = “C3”
values 按行获取表格的内容(数据) - 生成器
list(工作表.values) 按行获取工作表所有单元格值,可用[]切片截取某一段数据
iter_rows 按行获取所有单元格,内置属性有(min_row,max_row,min_col,max_col)
iter_columns 按列获取所有的单元格
append 在表格末尾添加数据
merged_cells 合并多个单元格
unmerged_cells 移除合并的单元格

3.单元格

3.1读取单元格

  1. A1单元格的值 = 工作表['A1'].value
  2. A1单元格的值2 = 工作表.cell(1,1).value
  3. A1单元格的列 = 工作表['A1'].column
  4. A1单元格的行 = 工作表['A1'].row
  5. A1单元格的坐标 = 工作表['A1'].coordinate
属性 作用
row 单元格所在的行
column 单元格坐在的列
coordinate 单元格的坐标
value 单元格的值

3.2单元格操作

3.2.1获取每一行、每一列

  1. #1.按行获取
  2. for i in sheet1.rows:
  3. for j in i:
  4. print(j.value)
  5. #2.按列获取
  6. for i in sheet1.columns:
  7. for j in i:
  8. print(j.value)

3.2.2数字、字母间转换

  1. #1. 数字转字母(一般根据列的数字号返回字母值)
  2. num_to_word = vb.utils.get_column_letter(2) #结果为 B
  3. #2. 根据字母返回数字
  4. word_to_num = vb.utils.column_index_from_string('D') #结果为 4

3.2.3写入数据

  1. #1. 向单元格写入数据,三种方式
  2. sheet1['a1'] = '写入a1'
  3. sheet1.cell(row=2,column=1,value='写入A2')
  4. wsheet1.cell(3,1).value='写入A3'
  5. #2. 在最后一行写入数据
  6. sheet1.append(列表)
  7. #3. 向一个区域内写入相同数据
  8. for i in sheet1['a1:b4']:
  9. for j in i:
  10. j.value = '同一内容'

3.2.4移动单元格

  1. #rows和cols正数为向下或向右,负数为向上或向左
  2. sheet1.move_range('A1:C3',rows=10,cols=10) #该区域向下、向右移动10单位

3.2.5冻结单元格

  1. sheet1.freeze_panes = 'C3' #冻结C3单元格左边列和上方的行

3.2.6行、列的插入与删除

名称 语法 说明
插入列 sheet1.insert_cols(3,2) 在sheet1工作表的第3列前插入2列
插入行 sheet1.insert_rows(2,3) 在sheet1工作表的第2行前插入3行
删除列 sheet1.delete_cols(位置,列数) 从指定位置开始向后删除指定的列数
删除行 sheet1.delete_rows(位置,行数) 从指定位置开始向下删除指定的行数

3.2.7 合并与取消合并单元格

  1. 工作表.merge_cells(start_row=起始行号,start_column=起始列号,end_row=结束行号,end_column=结束列号)
  2. 工作表.merge_cells('B3:B5') #合并
  3. 工作表.unmerge_cells('B3:B5') #取消合并