• Python 操作 Excel,如何又快又好?


    数据处理是 Python 的一大应用场景,而 Excel 则是最流行的数据处理软件。因此用 Python 进行数据相关的工作时,难免要和 Excel 打交道。Python处理Excel 常用的系列库有:xlrd、xlwt、xlutils、openpyxl

    xlrd - 用于读取 Excel 文件,支持.xls和.xlsx格式
    xlwt - 用于写入 Excel 文件,只支持.xls格式
    xlutils - 操作 Excel 文件的实用工具,如复制、分割、筛选等
    openpyxl - 既可以读文件、也可以写文件、也可以修改文件;但是,openpyxl 库不支持 xls 格式的Excel文档。

    一、安装库的操作

    打开cmd,输入命令进行安装:pip install xlwt

    图片

    打开cmd,输入命令进行安装:pip install xlrd

    图片

    打开cmd,输入命令进行安装:pip install openpyxl

    图片

    二、xlwt库使用

    xlwt - 用于写入 Excel 文件,只支持.xls格式

    1.需求:创建一个新的xls文件中写入如下数据,然后保存为login.xls

    图片

    2.使用xlwt写入数据的步骤

    1)导包:import xlwt
    2)创建一个文件对象:book=xlwt.Workbook()
    3)添加一个sheet工作表:sh1=book.add_sheet(Sheetname)
    4)添加内容:sh1.write(row,col,value)  #单元格行和列分别从0开始
    5)保存文件:book.save(filename)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.代码实现

    # coding = utf-8
    import xlwt
    
    #创建一个excel文件对象
    book = xlwt.Workbook() 
    #添sheet工作表
    sh1 = book.add_sheet('登录数据') 
    sh1.write(0,0,'用户名') # 在A1单元格写入数据
    sh1.write(0,1,'密码')   # 在B1单元格写入数据
    
    row1 = ['test','test123']
    # 结合循环写入一行数据
    for i in range(len(row1)): 
        sh1.write(1,i,row1[i])
    
    book.save('login.xls') # 保存文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    三、xlrd库使用

    xlrd - 用于读取 Excel 文件,支持.xls和.xlsx格式

    1.需求:读取login.xls文件中指定的单元格、指定行、指定的列或者所有的数据

    2.使用xlrd读取数据的步骤

    1)导包:import xlrd
    2)打开一个文件:book=xlrd.open_workbook(filename)
    3)使用sheet工作表:sh1=book.sheet_by_name(sheet_name)
    4)读取sheet工作表的属性信息
      print('sheet总行数',sh1.nrows)
      print('sheet总列数',sh1.ncols)
    5)读取sheet工作表存储的文本内容
      1)读取一行:row1=sh1.row_values(row) # 行号从0开始
      2)读取一列:col1=sh1.col_values(col) # 列号从0开始
      3)读取一个单元格:cell_value=sh1.cell(row,col).value
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    3.代码实现

    # coding = utf-8
    import xlrd
    
    book = xlrd.open_workbook('login.xls')
    sh1 = book.sheet_by_name('登录数据')
    # 读取第一行的数据
    row1 = sh1.row_values(0)
    print('第一行数据:',row1)
    
    # 读取第一列的数据
    col1 = sh1.col_values(0)
    print('第一列数据:',col1)
    
    # 读取指定单元格的数据
    cell = sh1.cell(1,1).value
    print('A2单元格的值:',cell)
    
    # 读取所有的数据
    rows = sh1.nrows  # 获取当前工作表总的行数
    for i in range(rows):
        print('所有数据打印,第{}行,数据为:{}:'.format(i,sh1.row_values(i)))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    4.代码运行结果展示:

    图片

    四、openpyxl库使用--写入数据

    openpyxl - 既可以读文件、也可以写文件、也可以修改Excel文件;但是不支持 xls 格式

    1.需求:对已存在的test_api.xlsx文件写入接口测试结果,如下图所示

    图片

    2.使用openpyx写入数据的步骤

    1)导包:import openpyxl
    2)打开文件:book = openpyxl.load_workbook(filename)
    3)使用sheet工作表:sheet = book[sheetname]
    4) 单元格写入:sh1['F2'] = 'PASS'  或者 sh1.cell(row,col).value='FAIL'  #行和列的索从1开始
    6:保存文件:book.save(filename)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.代码实现

    # coding = utf-8
    import openpyxl
    
    # 打开excel文件
    book = openpyxl.load_workbook('test_api.xlsx')
    # 通过工作表名字打开工作表
    sh1 = book['register']
    # 通过单元格的名称写入数据
    sh1['I2'] = '不通过'
    # 通过单元格的行、列写入数据
    sh1.cell(3,9).value = '通过'
    # 保存文件
    book.save('test_api.xlsx')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    五、openpyxl库使用--读取数据

    1.需求:读取test_api.xls文件中login工作表指定的单元格、指定行、或者所有的数据

    2.使用openpyx读取数据的步骤

    1)导包:import openpyxl
    2)打开文件:book = openpyxl.load_workbook(filename)
    3)使用sheet工作表:sheet = book[sheetname]
    4)读取sheet工作表的属性信息
      返回工作表的最大行数:sheet.max_row
      返回工作表的的最大列数:sheet.max_column
    5)读取sheet工作表存储的文本内容
    1)按单元格读取:cell1 = sh1['A1'].value 或者 cell2= sh1.cell(row,col).value #行和列的索引值是从1开始的
    2) 按行读取
       for row in sheet.iter_rows(max_row=3):# 读取前3行数据
      for cell in row:
          print(cell.value,end='	')
      print()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    3.代码实现

    # coding = utf-8
    import openpyxl
    
    book = openpyxl.load_workbook('test_api.xlsx')
    sh1 = book['login']
    # 读取单元格数据
    cell1 = sh1['A1'].value
    print('A1单元格的值为:',cell1)
    cell2 = sh1.cell(1,2).value
    print('B1单元格的值为:',cell2)
    
    # 读取前2行数据
    print('读取前2行数据:') 
    for row in sh1.iter_rows(max_row= 2): # 读取前2行数据
        for cell in row:
            print(cell.value,end='	|	') # 不换行输出这一行中每个单元格的值
        print() # 输出完一行之后换行
    
    # 读取所有的数据
    print('读取所有的数据:')
    rows = sh1.max_row  # 获取当前工作表总的行数
    for row in sh1.iter_rows(max_row=rows): # 读取所有的数据
        for cell in row:
            print(cell.value, end='	|	') # 不换行输出这一行中每个单元格的值
        print() # 输出完一行之后换行
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    4、运行结果

    在这里插入图片描述

    喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一 键三连哦!

    软件测试工程师自学教程:

    这才是2022最精细的自动化测试自学教程,我把它刷了无数遍才上岸字节跳动,做到涨薪20K【值得自学软件测试的人刷】

    接口性能测试 — 软件测试人必会618实战场景分析

    软件测试工程师月薪2W以上薪资必学技能 — Python接口自动化框架封装.

    美团面试真题_高级测试25K岗位面试 — 软件测试人都应该看看

    测试开发之全面剖析自动化测试平台 — 软件测试人的必经之路

    软件测试必会_Jmeter大厂实战 — 仅6步可实现接口自动化测试

    Jmeter实战讲解案例 — 软件测试人必会

    在这里插入图片描述

    在这里插入图片描述

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    appium+jenkins实例构建
    中国家电市场深度调查研究报告
    关于foreach标签传值为list的拼接条件问题,得用size来判断非空
    ChatGLM2 大模型微调过程中遇到的一些坑及解决方法(更新中)
    时序预测 | MATLAB实现NGO-BiLSTM北方苍鹰算法优化双向长短期记忆网络时间序列预测
    final关键字
    浅谈操作系统和进程
    python Jupyter程序之Matplotlib数据可视化
    883. 三维形体投影面积
    【ccf-csp题解】第四次csp认证-第四题-网络延时-树的直径
  • 原文地址:https://blog.csdn.net/m0_67402341/article/details/126113899