分享

学习Python与Excel:使用openpyxl处理Excel的一些基本操作代码

 hercules028 2023-02-11 发布于福建
excelperfect

标签:PythonExcelopenpyxl
本文介绍使用openpyxl处理Excel工作表的一些基本操作代码,包括:
1.从工作簿中获取工作表
2.读取单元格数据
3.遍历行和列
4.写入Excel工作表
5.添加和删除工作表
6.添加和删除行和列
首先,需要安装openpyxl
pip install openpyxl
注意,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_workbookdef 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对象的rowcolumn属性获取行和列信息。注意,列“A”映射到“1”,“B”映射到“2”,等等。如果要遍历Excel文档,可以使用coordinate属性获取单元格名称。
遍历行和列
有时候,需要遍历整个Excel电子表格或其一部分,代码如下:
from openpyxl import load_workbookdef 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()函数迭代行和列,这些方法接受几个参数:
1.min_row
2.max_row
3.min_col
4.max_col
还可以添加一个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()齐心协力工作表行并打印这些行中的值。
写入Excel工作表
使用Workbook()类创建工作表,代码如下:
from openpyxl import Workbookdef 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')
代码将创建一个新工作簿,然后向其中添加两个新工作表,再使用Pythondel关键字删除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有几种有用的可用于在电子表格中添加和删除行和列的方法:
.insert_rows()
.delete_rows()
.insert_cols()
.delete_cols()
每个方法都接受两个参数:
idx-插入行或列的索引
amount-要添加的行或列的数量
示例代码如下:
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,供参考。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多