本文介绍使用openpyxl处理Excel工作表的一些基本操作代码,包括:注意,openpyxl不需要安装Microsoft
Excel,它可以在所有平台上运行。 from openpyxl import load_workbook
def open_workbook(path): workbook = load_workbook(filename=path) print(f'工作表名: {workbook.sheetnames}') sheet = workbook.active print(sheet) print(f'当前工作表名是:{sheet.title}') if __name__ == '__main__': open_workbook(r'C:\test\myfilebook.xlsx') 代码从openpyxl中导入load_workbook(),然后创建open_workbook()函数接受要打开的工作簿路径。接下来,使用load_workbook()创建openpyxl.workbook.workbook.Workbook对象,允许访问工作表及其中的单元格。在Excel中,数据存储在工作表单元格中,下面的代码来读取单元格数据:from openpyxl import load_workbook def get_cell_info(path): workbook = load_workbook(filename=path) sheet = workbook.active print(sheet) print(f'当前工作表名称为:{sheet.title}') print(f'单元格A2值{sheet['A2'].value=}') print(f'单元格A3值{sheet['A3'].value=}') cell = sheet['B3'] print(f'{cell.value=}')
if __name__ == '__main__': get_cell_info(r'C:\test\myfilebook.xlsx') 此代码装载Excel工作簿文件,获取活动工作表,然后打印出其标题和几个不同的单元格值。可以使用sheet对象访问单元格,该对象后面跟着方括号,括号内有列名和行号。例如,sheet[“A2”]将获得位于“A”列第2行的单元格。要获取该单元格的值,使用value属性。可以使用单元格的某些其他属性获取有关该单元格的其他信息。将以下函数添加到上述代码中:def get_info_by_coord(path): workbook = load_workbook(filename=path) sheet = workbook.active cell = sheet['A2'] print(f'行 {cell.row}, 列{cell.column} = {cell.value}') print(f'{cell.value=}位于{cell.coordinate=}')
if __name__ == '__main__': get_info_by_coord(r'C:\test\myfilebook.xlsx') 代码中,使用cell对象的row和column属性获取行和列信息。注意,列“A”映射到“1”,“B”映射到“2”,等等。如果要遍历Excel文档,可以使用coordinate属性获取单元格名称。有时候,需要遍历整个Excel电子表格或其一部分,代码如下:from openpyxl import load_workbook def iterating_range(path): workbook = load_workbook(filename=path) sheet = workbook.active for cell in sheet['A']: print(cell) if __name__ == '__main__': iterating_range(r'C:\test\myfilebook.xlsx') 代码装载工作簿,遍历当前工作表列A中的所有单元格。Openpyxl还提供了使用iter_rows()和iter_cols()函数迭代行和列,这些方法接受几个参数:还可以添加一个values_only参数,该参数告诉openpyxl返回单元格的值,而不是单元格对象。代码示例:from openpyxl import load_workbook
def iterating_over_values(path): workbook = load_workbook(filename=path) sheet = workbook.active for value in sheet.iter_rows( min_row=1, max_row=3, min_col=1, max_col=3, values_only=True,): print(value)
if __name__ == '__main__': iterating_over_values(r'C:\test\myfilebook.xlsx') 代码演示了如何使用iter_rows()齐心协力工作表行并打印这些行中的值。from openpyxl import Workbook def create_workbook(path): workbook = Workbook() sheet = workbook.active sheet['A1'] = '完美Excel' sheet['A2'] = 'excelperfect' sheet['A3'] = 'Excel' workbook.save(path)
if __name__ == '__main__': create_workbook(r'C:\test\openpyxl.xlsx') 代码创建工作簿实例并获取活动工作表,然后将列“A”中的前三行设置为不同的字符串。最后,调用save()保存工作簿。openpyxl通过create_sheet()方法对Workbook()对象添加新工作表。示例代码:import openpyxl
def create_worksheets(path): workbook = openpyxl.Workbook() print(workbook.sheetnames) #添加新工作表 workbook.create_sheet() print(workbook.sheetnames) #插入工作表 workbook.create_sheet(index=1,title='Second sheet') print(workbook.sheetnames) workbook.save(path)
if __name__ == '__main__': create_worksheets(r'C:\test\mynewsheets.xlsx') 代码使用create_sheet()两次,给工作簿添加了两个工作表。第二个示例显示了如何设置工作表的标题以及插入工作表的索引。参数index=1表示工作表将添加到第一个现有工作表之后,因为它们的索引是从0开始的。import openpyxl
def create_worksheets(path): workbook = openpyxl.Workbook() workbook.create_sheet() # 插入工作表 workbook.create_sheet(index=1, title='Second sheet') print(workbook.sheetnames) del workbook['Second sheet'] print(workbook.sheetnames) workbook.save(path)
if __name__ == '__main__': create_worksheets(r'C:\test\del_sheets.xlsx') 代码将创建一个新工作簿,然后向其中添加两个新工作表,再使用Python的del关键字删除workbook['Second
sheet’]。从工作簿中删除工作表的另一种方法是使用remove()方法:import openpyxl
def remove_worksheets(path): workbook = openpyxl.Workbook() sheet1 = workbook.create_sheet() # 插入工作表 workbook.create_sheet(index=1, title='Second sheet') print(workbook.sheetnames) workbook.remove(sheet1) print(workbook.sheetnames) workbook.save(path)
if __name__ == '__main__': remove_worksheets(r'C:\test\remove_sheets.xlsx') openpyxl有几种有用的可用于在电子表格中添加和删除行和列的方法:from openpyxl import Workbook
def inserting_cols_rows(path): workbook = Workbook() sheet = workbook.active sheet['A1'] = '完美Excel' sheet['A2'] = 'excelperfect' sheet['A3'] = 'Excel' # 在列A前插入一列 sheet.insert_cols(idx=1) # 第2行开始插入2行 sheet.insert_rows(idx=2, amount=2) workbook.save(path)
if __name__ == '__main__': inserting_cols_rows(r'C:\test\inserting.xlsx') 代码创建一个工作表,并在列“A”之前插入一个新列。列的索引从1开始,而工作表的索引从0开始。然后从第2行开始插入两个新行。from openpyxl import Workbook
def deleting_cols_rows(path): workbook = Workbook() sheet = workbook.active sheet['A1'] = '完美Excel' sheet['B1'] = 'excelperfect' sheet['C1'] = 'Excel' sheet['A2'] = '行2' sheet['A3'] = '行3' sheet['A4'] = '行4' # 删除列A sheet.delete_cols(idx=1) # 从第2行开始删除2行 sheet.delete_rows(idx=2, amount=2) workbook.save(path)
if __name__ == '__main__': deleting_cols_rows(r'C:\test\deleting.xlsx') 这段代码在几个单元格中输入文本,然后使用delete_cols()删除列A,还通过delete_rows()删除从第二行开始的两行。当然,openpyxl还可以做很多操作,向单元格添加公式、更改字体并将其他类型的样式应用于单元格,有兴趣的朋友可以参考其官方文档。注:本文学习整理自www.blog.pythonlibrary.org,供参考。
|