Excel文件包含多个表,当前查看的表为活动表。每个表有多列,从A开始编号;也有多个行,从1开始计数。
读取文件
- 打开文件
python打开excel文件需要导入openpyxl模块,使用openpyxl.load_workbook()函数,该函数接受一个文件名,获得Workbook()对象。
import openpyxl
wb = openpyxl.load_workbook('table.xlsx')
- 读取表格
get_sheet_names()可以取得文件中所有表名,返回一个列表。
wb.get_sheet_names()
get_sheet_by_name()放入传入表名可以获得表,返回一个Worksheet对象。该对象的.title属性可以获得名称。
sheet = wb.get_sheet_by_name('Sheet1')
sheet.title
active属性可以获得活动表,也即当前查看的表。
anotherSheet = wb.active
- 获取一个单元格
获得表格后,通过下表访问单元格,获得Cell对象。单元格有value属性,得到单元格中保存的值。
sheet = wb.get_sheet_by_name('Sheet1')
sheet['A1'].value
Worksheet对象的max_row()和max_column()属性获得表的大小。
sheet.max_row
sheet.max_column
Cell对象也有row、column和coordinate属性,提供单元格位置信息。
c = sheet['A1']
c.row # 行信息,1
c.column # 列信息,2
c.coordinate # 行列信息,A1
获得单元格时也可以传入row和column关键字参数来指定。
sheet.cell(row=1, column=1).value
for i in range(1, 5):
print(sheet.cell(row=i, column=1).value)
第一行或第一列从1开始编号。
- 获得一片单元格
Worksheet对象可以切片,获得一行、一列或者一个区域中的全部单元格对象,然后使用循环遍历每个单元格。
Worksheet对象可以通过rows和columns属性获得行和列的切片。
list(sheet.rows)[1]
list(sheet.columns)[2]
for i in (sheet.columns)[1]:
print(i.value)
还可以获得矩形切片。
for i in sheet sheet['A1', 'D4']
for j in i:
print(j.coordinate, j.value)
这里遍历的是A1到D4中全部单元格对象,外层循环遍历每一行,内层循环遍历每个单元格。
写入文件
- 创建文档
调用openpyxl.Workbook()函数创建一个新的Workbook对象。
wb = openpyxl.Workbook()
wb.get_sheet_names()
sheet = wb.active
sheet.title = 'sheet1'
创建Workbook对象后有一个名为Sheet的表,可以通过title属性修改表名。
- 保存文档
调用save()方法保存文档,传入一个文件名。
wb.save('table.xlsx')
- 创建工作表
利用create_sheet()方法添加工作表。
wb.create_sheet()
新创建的表默认是最后一个工作表,可以利用index参数指定新工作表的索引。
wb.create_sheet(index=0)
还可以利用title参数指定工作表名称。
wb.create_sheet(index=0, title='New Sheet')
- 删除工作表
利用remove_sheet()方法删除工作表。该方法接受一个Worksheet对象作为参数,而不是工作表的名称。因此,就需要调用get_sheet_by_name()方法输入表的名称,将返回结果传入remove_sheet()方法。
wb.remove_sheet(wb.get_sheet_by_name('New Sheet'))
- 写入数据
通过下标的方式把数据写入单元格。
sheet['A1'] = 'hello world'
本文介绍了如何使用Python的openpyxl库在Excel文件中进行表的读取、写入,包括获取表格、单元格数据、创建和删除工作表,以及数据的批量写入。涵盖了活动表的选择、单元格定位、切片操作和文件操作的基本流程。
1492





