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

     3.代码实现

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

    三、xlrd库使用

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

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

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

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

    3.代码实现

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

    4.代码运行结果展示:

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

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

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

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

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

     3.代码实现

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

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

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

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

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

    3.代码实现

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

    4、运行结果

    最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

    这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

  • 相关阅读:
    传统机器学习总结
    读《Gaitset: Regarding gait as a set for cross-view gait recognition》
    现网常见问题及解决思路
    cesium 源码分析 裁切面原理
    BottomSheetDialogFragment大量踩坑-自适应高度和最大高度和滚动问题等等
    多副本技术在数据安全中的应用
    代码随想录算法训练营第二十八天| 509. 斐波那契数 , 70. 爬楼梯 , 746. 使用最小花费爬楼梯
    taro超过3行隐藏显示展开功能
    学生成绩管理系统(c语言)
    插件_日期_lunar-calendar公历农历转换
  • 原文地址:https://blog.csdn.net/qq_48811377/article/details/136346784