python如何通过openpyxl读写Excel文件

 更新时间:2023年10月07日 09:57:36   作者:檬柠wan  
python操作excel的库有很多,有的库只能读取xsl格式,比如xlrd库,有的库只能写xsl格式,比如xlwt库,有的只能读写xslx格式,比如openpyxl库,综合各库及 xslx 格式比较常见,所以本文主要讲解openpyxl库对xslx格式的excel操作,需要的朋友可以参考下

一、模块安装

openpyxl模块可实现对excel文件的读、写和修改,使用之前需要先安装该模块。

# openpyxl生成的xlsx格式支持wps和office,xls格式只支持wps,使用office打开会报错
pip install openpyxl

二、 使用方法

Excel演示内容,整个Excel文件称为工作簿,工作簿中的每个页称为工作表,工作表又由单元格组成。

1、新建Excel并写入数据

import openpyxl
# 创建一个新的工作簿对象
wb = openpyxl.Workbook()
# 获取工作表对象(sheet)
ws = wb.active
print(ws)
# 设置Sheet名称
ws.title = '学生表'
# 创建一个新sheet,可以指定名称,index表示新创建的工作簿放在第几个位置, index从0开始计数
ws_1 = wb.create_sheet(index=1, title='成绩表')
ws_2 = wb.create_sheet(index=2, title='科目表')
# 获取所有工作表名称
print(wb.sheetnames)
# 方法一:写入单个单元格
ws['A1'] = '姓名'
ws['B1'] = '班级'
ws['c1'] = '年龄'
# 方法二:写入单个单元格(行,列,内容); 也可以直接ws.cell(1, 4, '学校')
ws.cell(row=1, column=4, value='学校')
# 写入多个单元格(追加模式,不会覆盖之前的,从有数据的下一行开始)
ws.append(['王明', '三年级一班', '9岁'])
# 第一列和第三列插入数据,第二列插入[None]值
ws.append(['王五', None, '10岁'])
# 追加第二行数据,过滤空值
# 获取工作表总行数
max_row = ws.max_row
col_values = []
# 遍历第二列所有行
for row in range(1, max_row+1):
    # 获取当前单元格的值
    cell_value = ws.cell(row=row, column=2).value
    # 如果当前单元格的值不为空
    if cell_value is not None:
        # 将当前单元格的值添加到列表中
        col_values.append(cell_value)
print("第二列有 %d 行数据" % len(col_values))
ws.cell(len(col_values)+1, 2, "三年级二班")
# 将新数据追加到最后一行,忽略第二列
data = [['张三', '10岁'], ['李四', '15岁']]
for row in data:
    # 在第二列插入 None 值,实现跳过该列
    row.insert(1, None)
    ws.append(row)
# 保存
wb.save('1.xlsx')

2、读取Excel数据

import openpyxl
# 获取工作簿对象
wb = openpyxl.load_workbook('1.xlsx')
# 获取所有工作表名称
print(wb.sheetnames)
# 获取工作表对象,三种方法
sheet1 = wb['学生表']
sheet2 = wb.worksheets[1]
sheet3 = wb[wb.sheetnames[2]]
print(sheet1, sheet2, sheet3)
# 获取工作表名称
title = sheet1.title
print(title)
# 获取工作表总行数
rows = sheet1.max_row
# 获取工作表总列数
cols = sheet1.max_column
# 总行,总列
print(rows, cols)
# 获取某一单元格内容(行, 列),例:2行1列,列表从1开始;也可以直接sheet1.cell(2, 1).value
cell = sheet1.cell(row=2, column=1).value
print(cell)
# 读取第一行的所有内容
row_list = []
for i in range(1, cols+1):
    cell_value = sheet1.cell(row=1, column=i).value
    row_list.append(cell_value)
print(row_list)
# 读取第一列的所有内容
column_list = []
for i in range(1, rows+1):
    cell_value = sheet1.cell(row=i, column=1).value
    column_list.append(cell_value)
print(column_list)
# 读取第二列的所有内容,不包含空值
col_values = []
# 遍历第二列所有行
for i in range(1, rows+1):
    # 获取当前单元格的值
    cell_value = sheet1.cell(row=i, column=2).value
    # 如果当前单元格的值不为空
    if cell_value is not None:
        # 将当前单元格的值添加到列表中
        col_values.append(cell_value)
print(col_values, len(col_values))

结果:

3、编辑Excel数据

import openpyxl
# 获取工作簿对象
wb = openpyxl.load_workbook('1.xlsx')
# 获取工作表对象
sheet = wb['学生表']
# 修改指定单元格内容
sheet.cell(row=1, column=4, value='老师')
# 写入多个单元格(追加模式,不会覆盖之前的,从有数据的下一行开始)
sheet.append(['王五', '三年级二班', '10岁'])
# 复制"学生表",新sheet名称为"学生表 Copy"
ws_2 = wb.copy_worksheet(wb['学生表'])
# 保存
wb.save('1.xlsx')

4、删除Excel数据

import openpyxl
# 获取工作簿对象
wb = openpyxl.load_workbook('1.xlsx')
# 选择要删除内容的工作表和单元格(行, 列)
sheet1 = wb['学生表']
cell_to_delete = sheet1.cell(row=2, column=1)
# 删除单元格内容
cell_to_delete.value = None
# 删除 成绩表 工作表
del wb['成绩表']
# 保存
wb.save('1.xlsx')

总结 

到此这篇关于python如何通过openpyxl读写Excel文件的文章就介绍到这了,更多相关python openpyxl读写Excel内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解如何在python中读写和存储matlab的数据文件(*.mat)

    详解如何在python中读写和存储matlab的数据文件(*.mat)

    这篇文章主要介绍了详解如何在python中读写和存储matlab的数据文件(*.mat),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • Python安装.whl文件流程以及问题解决方法

    Python安装.whl文件流程以及问题解决方法

    WHL文件是以Wheel格式保存的Python安装包,Wheel是Python发行版的标准内置包格式,下面这篇文章主要给大家介绍了关于Python安装.whl文件流程以及问题解决方法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • python flask中动态URL规则详解

    python flask中动态URL规则详解

    今天小编就为大家分享一篇python flask中动态URL规则详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • python函数形参用法实例分析

    python函数形参用法实例分析

    这篇文章主要介绍了python函数形参用法,较为详细的讲述了Python函数形参的功能、定义及使用技巧,需要的朋友可以参考下
    2015-08-08
  • Python3实现取图片中特定的像素替换指定的颜色示例

    Python3实现取图片中特定的像素替换指定的颜色示例

    这篇文章主要介绍了Python3实现取图片中特定的像素替换指定的颜色,涉及Python3针对图片文件的读取、转换、生成等相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • 一篇文章带你学习Python3的高级特性(2)

    一篇文章带你学习Python3的高级特性(2)

    这篇文章主要为大家详细介绍了Python3的高阶函数,主要介绍什么是高级特性,高级特性的用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Python编程实现小姐姐跳舞并生成词云视频示例

    Python编程实现小姐姐跳舞并生成词云视频示例

    本文用Python做了一个词云视频,以另一种角度来看小姐姐跳舞视频左半部分是小姐姐跳舞视频,右半部分是根据动作生成的的词云视频,有需要的朋友可以借鉴参考下
    2021-10-10
  • Python unittest单元测试框架及断言方法

    Python unittest单元测试框架及断言方法

    这篇文章主要介绍了Python unittest单元测试框架及断言方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • 如何运用python读写CSV文件

    如何运用python读写CSV文件

    本文通过讲解使用基础Python代码来读写和处理CSV文件,点进来的小伙伴一起来学习吧
    2021-08-08
  • 详解Python Requests库中的重试策略

    详解Python Requests库中的重试策略

    在Python中,requests库是处理HTTP请求的标准工具之一,这篇文章主要为大家介绍了如何在requests中实现请求的自动重试,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-11-11

最新评论