1、加载或创建Excel文件
- 当Excel文件存在时,wb = openpyxl.load_workbook() 接受文件名或文件的绝对路径,返回一个workbook数据类型的值
- 当Excel文件不存在时,创建workbook,并且保存
import openpyxl
wb = openpyxl.Workbook()
wb.active.title=‘mysheet’
wb.save(“test.xlsx”)
2、获得、创建、删除sheet表
- sheet_list = wb.worksheets
可通过索引指向不同表sheet_list[0]、sheet_list[1] - name_list = wb.sheetnames取得工作簿中所有表名的列表
- sheet = wb[‘Sheet1’] 传递表名字符串获得该表
- sheet = wb.active取得工作簿的活动表,即工作簿在Excel打开时出现的工作表
- wb.create_sheet(“mysheet”) 调用create_sheet()方法,就能在相对应的excel中创建一个sheet,也可在方法中指定下标,在特定位置创建表wb.create_sheet(index=1, title=“mysheet”) ;wb.remove(wb[“my sheet”]) 或者 del wb[sheetname] 来删除表
3、获得cell对象(单元格)
- c = sheet[‘A1’] 获得单元格;c.value获得单元格中的值;c.row获得单元格的横坐标数字;c.column获得单元格的纵坐标字母;c.coordinate获得单元格的坐标字符串;**sheet[‘A1’] = ‘string’**可直接更改单元格中的值
- c = sheet.cell(row=1, column=2) 通过cell方法和它的关键字参数得到cell对象(也可使用位置参数);sheet.cell(1, 2, ‘target_string’) 可以更改单元格的值
4、获取表的行数与列数,列字母与数字的相互转换
- 可以通过 Worksheet 对象的 max_row和 max_column,maXrow = sheet.max_row, maXcolumn = sheet.max_column均返回一个整数,确定表的大小
- 从字母转换到数字就用openpyxl.utils.column_index_from_string(‘AA’);从数字转换到字母就用openpyxl.utils.get_column_letter(24),注意需要先从openpyxl.utils中引入这两个函数
5、获得行或列
- sheet[‘A1’:‘C3’] 获得嵌套的元组,内层的元组是每一行单元格构成的
((<Cell 'Sheet1'.A1>, <Cell 'Sheet1'.B1>, <Cell 'Sheet1'.C1>),
(<Cell 'Sheet1'.A2>, <Cell 'Sheet1'.B2>, <Cell 'Sheet1'.C2>),
(<Cell 'Sheet1'.A3>, <Cell 'Sheet1'.B3>, <Cell 'Sheet1'.C3>))
- 要访问特定行或列的单元格的值,可以利用list(sheet.rows)[1]或者sheet[‘2’] 得到第二行构成的元组,list(sheet.columns)[0] 或者**sheet[‘A’]**得到第A列构成的元组
6、设定字体格式
- 设定字体方法
from openpyxl.styles import Font
wb = openpyxl.Workbook()
sheet = wb['Sheet']
italic24Font = Font(name = '黑体', size = 24, italic = True) #将字体设置为24号斜体
sheet['A1'].font = italic24Font
wb.save("文件路径") #记得保存
Font()函数的关键字参数
关键字参数 | 数据类型 | 描述 |
---|---|---|
name | 字符串 | 字体名称,诸如’Calibri’ 或’黑体’ |
size | 整型 | 大小点数 |
bold | 布尔型 | True 表示粗体 |
italic | 布尔型 | True表示斜体 |
7、公式的应用
在加载文件时,load_workbook()函数应该传入参数data_only=True,文档才能显示公式计算后的结果而不是公式本身
import openpyxl
wb = openpyxl.load_workbook("F:\\python_work\\CSDN\\example.xlsx", data_only = True)
sheet = wb.active
sheet['D1'] = '=SUM(C1:C7)'
wb.save('example.xlsx')
8、调整行列的高度与宽度
#调整行列的高度与宽度
import openpyxl
wb = openpyxl.load_workbook("F:\\python_work\\CSDN\\example.xlsx")
sheet = wb.active
sheet.row_dimensions[1].height = 40 #更改第一行的高度
sheet.column_dimensions['A'].width = 10 #更改第一列的宽度
wb.save('example.xlsx')
9、合并拆分单元格
#合并、拆分单元格
import openpyxl
wb = openpyxl.load_workbook("F:\\python_work\\CSDN\\example.xlsx")
sheet = wb.active
sheet.merge_cells('A1:D1')
sheet['A1'] = '四个单元格合并'
wb.save('example.xlsx')
同理可用sheet.unmerge_cells(‘A1:D1’)拆开合并的单元格
10、冻结行或列
#冻结某一行或某一列,滚动时被冻结的行列不会被移出屏幕
import openpyxl
wb = openpyxl.load_workbook("F:\\python_work\\CSDN\\censuspopdata.xlsx")
sheet = wb.active
sheet.freeze_panes = 'B2' #B2单元格以上的行,以及以左的列被冻结,单元格所在的行与列并不会被冻结
wb.save('censuspopdata.xlsx')
openpyxl更新后的方法参考 https://www.codeleading.com/article/7542118289/