深圳 赢客创想网络技术股份有限公司 网站建设网站建设和续费

news/2025/9/23 15:10:00/文章来源:
深圳 赢客创想网络技术股份有限公司 网站建设,网站建设和续费,北京市保障性住建设投资中心网站首页,手机建设中网站首页前言 自动化测试中我们存放数据无非是使用文件或者数据库#xff0c;那么文件可以是csv#xff0c;xlsx#xff0c;xml#xff0c;甚至是txt文件#xff0c;通常excel文件往往是我们的首选#xff0c;无论是编写测试用例还是存放测试数据#xff0c;excel都是很方便的。…前言 自动化测试中我们存放数据无非是使用文件或者数据库那么文件可以是csvxlsxxml甚至是txt文件通常excel文件往往是我们的首选无论是编写测试用例还是存放测试数据excel都是很方便的。那么今天我们就把不同模块处理excel文件的方法做个总结直接做封装方便我们以后直接使用增加工作效率。 一、openpyxl openpyxl是个第三方库首先我们使用命令 pip install openpyxl 直接安装 注openpyxl操作excel时行号和列号都是从1开始计算的 封装代码 from openpyxl import load_workbook from openpyxl.styles import Font from openpyxl.styles.colors import BLACK from collections import namedtuple class ParseExcel(object):解析excel文件def __init__(self, filename, sheet_nameNone):try:self.filename filenameself.sheet_name sheet_nameself.wb load_workbook(self.filename)if self.sheet_name is None:self.work_sheet self.wb.activeelse:self.work_sheet self.wb[self.sheet_name]except FileNotFoundError as e:raise edef get_max_row_num(self):获取最大行号max_row_num self.work_sheet.max_rowreturn max_row_numdef get_max_column_num(self):获取最大列号max_column self.work_sheet.max_columnreturn max_columndef get_cell_value(self, coordinateNone, rowNone, columnNone):获取指定单元格的数据if coordinate is not None:try:return self.work_sheet[coordinate].valueexcept Exception as e:raise eelif coordinate is None and row is not None and column is not None:if isinstance(row, int) and isinstance(column, int):return self.work_sheet.cell(rowrow, columncolumn).valueelse:raise TypeError(row and column must be type int)else:raise Exception(Insufficient Coordinate of cell!)def get_row_value(self, row):获取某一行的数据column_num self.get_max_column_num()row_value []if isinstance(row, int):for column in range(1, column_num 1):values_row self.work_sheet.cell(row, column).valuerow_value.append(values_row)return row_valueelse:raise TypeError(row must be type int)def get_column_value(self, column):获取某一列数据row_num self.get_max_column_num()column_value []if isinstance(column, int):for row in range(1, row_num 1):values_column self.work_sheet.cell(row, column).valuecolumn_value.append(values_column)return column_valueelse:raise TypeError(column must be type int)def get_all_value_1(self):获取指定表单的所有数据(除去表头)max_row_num self.get_max_row_num()max_column self.get_max_column_num()values []for row in range(2, max_row_num 1):value_list []for column in range(1, max_column 1):value self.work_sheet.cell(row, column).valuevalue_list.append(value)values.append(value_list)return valuesdef get_all_value_2(self):获取指定表单的所有数据(除去表头)rows_obj self.work_sheet.iter_rows(min_row2, max_rowself.work_sheet.max_row,values_onlyTrue) # 指定values_only 会直接提取数据不需要再使用cell().valuevalues []for row_tuple in rows_obj:value_list []for value in row_tuple:value_list.append(value)values.append(value_list)return valuesdef get_excel_title(self):获取sheet表头title_key tuple(self.work_sheet.iter_rows(max_row1, values_onlyTrue))[0]return title_keydef get_listdict_all_value(self):获取所有数据返回嵌套字典的列表sheet_title self.get_excel_title()all_values self.get_all_value_2()value_list []for value in all_values:value_list.append(dict(zip(sheet_title, value)))return value_listdef get_list_nametuple_all_value(self):获取所有数据返回嵌套命名元组的列表sheet_title self.get_excel_title()values self.get_all_value_2()excel namedtuple(excel, sheet_title)value_list []for value in values:e excel(*value)value_list.append(e)return value_listdef write_cell(self, row, column, valueNone, boldTrue, colorBLACK):指定单元格写入数据:param work_sheet::param row: 行号:param column: 列号:param value: 待写入数据:param bold: 加粗 默认加粗:param color: 字体颜色默认黑色:return:try:if isinstance(row, int) and isinstance(column, int):cell_obj self.work_sheet.cell(row, column)cell_obj.font Font(colorcolor, boldbold)cell_obj.value valueself.wb.save(self.filename)else:raise TypeError(row and column must be type int)except Exception as e:raise e if __name__ __main__:pe ParseExcel(testdata.xlsx)# sheet pe.get_sheet_object(testcase)column_row pe.get_max_column_num()print(最大列号:, column_row)max_row pe.get_max_row_num()print(最大行号:, max_row)#cell_value_1 pe.get_cell_value(row2, column3)print(第%d行, 第%d列的数据为: %s % (2, 3, cell_value_1))cell_value_2 pe.get_cell_value(coordinateA5)print(A5单元格的数据为: {}.format(cell_value_2))value_row pe.get_row_value(3)print(第{}行的数据为:{}.format(3, value_row))value_column pe.get_column_value(2)print(第{}列的数据为:{}.format(2, value_column))#values_1 pe.get_all_value_1()print(第一种方式获取所有数据\n, values_1)values_2 pe.get_all_value_2()print(第二种方式获取所有数据\n, values_2)title pe.get_excel_title()print(表头为\n{}.format(title))dict_value pe.get_listdict_all_value()print(所有数据组成的嵌套字典的列表:\n, dict_value)#namedtuple_value pe.get_list_nametuple_all_value()print(所有数据组成的嵌套命名元组的列表:\n, namedtuple_value)pe.write_cell(1, 2, Tc_title) 上面这个封装如如果用来同时操作同一个excel文件的两个sheet写入数据时会有点小bug写完后你会发现两个表单有一个是没有数据的 其实原因很简单不同对象拥有自己独立的属性 当你写操作的时候其实每个对象只针对自己的表单做了保存所以最后一个对象写完数据后只保存了自己的表单其他的对象的表单实际是没有保存的。针对这个问题对上面封装的代码进行了轻微改动 from openpyxl import load_workbook from openpyxl.styles import Font from openpyxl.styles.colors import BLACK from collections import namedtupleclass ParseExcel(object):解析excel文件def __init__(self, filename):try:self.filename filenameself.__wb load_workbook(self.filename)except FileNotFoundError as e:raise edef get_max_row_num(self, sheet_name):获取最大行号max_row_num self.__wb[sheet_name].max_rowreturn max_row_numdef get_max_column_num(self, sheet_name):获取最大列号max_column self.__wb[sheet_name].max_columnreturn max_columndef get_cell_value(self, sheet_name, coordinateNone, rowNone, columnNone):获取指定单元格的数据if coordinate is not None:try:return self.__wb[sheet_name][coordinate].valueexcept Exception as e:raise eelif coordinate is None and row is not None and column is not None:if isinstance(row, int) and isinstance(column, int):return self.__wb[sheet_name].cell(rowrow, columncolumn).valueelse:raise TypeError(row and column must be type int)else:raise Exception(Insufficient Coordinate of cell!)def get_row_value(self, sheet_name, row):获取某一行的数据column_num self.get_max_column_num(sheet_name)row_value []if isinstance(row, int):for column in range(1, column_num 1):values_row self.__wb[sheet_name].cell(row, column).valuerow_value.append(values_row)return row_valueelse:raise TypeError(row must be type int)def get_column_value(self, sheet_name, column):获取某一列数据row_num self.get_max_column_num(sheet_name)column_value []if isinstance(column, int):for row in range(1, row_num 1):values_column self.__wb[sheet_name].cell(row, column).valuecolumn_value.append(values_column)return column_valueelse:raise TypeError(column must be type int)def get_all_value_1(self, sheet_name):获取指定表单的所有数据(除去表头)max_row_num self.get_max_row_num(sheet_name)max_column self.get_max_column_num(sheet_name)values []for row in range(2, max_row_num 1):value_list []for column in range(1, max_column 1):value self.__wb[sheet_name].cell(row, column).valuevalue_list.append(value)values.append(value_list)return valuesdef get_all_value_2(self, sheet_name):获取指定表单的所有数据(除去表头)rows_obj self.__wb[sheet_name].iter_rows(min_row2, max_rowself.__wb[sheet_name].max_row, values_onlyTrue)values []for row_tuple in rows_obj:value_list []for value in row_tuple:value_list.append(value)values.append(value_list)return valuesdef get_excel_title(self, sheet_name):获取sheet表头title_key tuple(self.__wb[sheet_name].iter_rows(max_row1, values_onlyTrue))[0]return title_keydef get_listdict_all_value(self, sheet_name):获取所有数据返回嵌套字典的列表sheet_title self.get_excel_title(sheet_name)all_values self.get_all_value_2(sheet_name)value_list []for value in all_values:value_list.append(dict(zip(sheet_title, value)))return value_listdef get_list_nametuple_all_value(self, sheet_name):获取所有数据返回嵌套命名元组的列表sheet_title self.get_excel_title(sheet_name)values self.get_all_value_2(sheet_name)excel namedtuple(excel, sheet_title)value_list []for value in values:e excel(*value)value_list.append(e)return value_listdef write_cell(self, sheet_name, row, column, valueNone, boldTrue, colorBLACK):if isinstance(row, int) and isinstance(column, int):try:cell_obj self.__wb[sheet_name].cell(row, column)cell_obj.font Font(colorcolor, boldbold)cell_obj.value valueself.__wb.save(self.filename)except Exception as e:raise eelse:raise TypeError(row and column must be type int)if __name__ __main__:pe ParseExcel(testdata.xlsx)print(pe.get_all_value_2(division))print(pe.get_list_nametuple_all_value(division))column_row pe.get_max_column_num(division)print(最大列号:, column_row)max_row pe.get_max_row_num(division)print(最大行号:, max_row)cell_value_1 pe.get_cell_value(division, row2, column3)print(第%d行, 第%d列的数据为: %s % (2, 3, cell_value_1))cell_value_2 pe.get_cell_value(division, coordinateA5)print(A5单元格的数据为: {}.format(cell_value_2))value_row pe.get_row_value(division, 3)print(第{}行的数据为:{}.format(3, value_row))value_column pe.get_column_value(division, 2)print(第{}列的数据为:{}.format(2, value_column))values_1 pe.get_all_value_1(division)print(第一种方式获取所有数据\n, values_1)values_2 pe.get_all_value_2(division)print(第二种方式获取所有数据\n, values_2)title pe.get_excel_title(division)print(表头为\n{}.format(title))dict_value pe.get_listdict_all_value(division)print(所有数据组成的嵌套字典的列表:\n, dict_value)namedtuple_value pe.get_list_nametuple_all_value(division)print(所有数据组成的嵌套命名元组的列表:\n, namedtuple_value)pe.write_cell(division, 1, 2, Tc_title) 二、xlrd 安装xlrd此模块只支持读操作 如果要写需要使用xlwt或者使用xlutils配合xlrd 但是使用xlwt只能对新的excel文件进行写操作无法对原有文件进行写 所以这里选择使用xlutils 但是还有一个问题就是如果使用xlutils 那么我们的excel文件需要以.xls 为后缀。因为以xlsx为后缀无法实现写会报错(亲测因为formatting_info参数还没有对新版本的xlsx的格式完成兼容) 注xlrd操作excel时行号和列号都是从0开始计算的 封装代码 import xlrd from xlutils import copy from collections import namedtupleclass ParseExcel(object):# xlrd 解析excel 行号和列号都是从0开始的def __init__(self, filename, sheet):try:self.filename filenameself.sheet sheetself.wb xlrd.open_workbook(self.filename, formatting_infoTrue)if isinstance(sheet, str):self.sheet self.wb.sheet_by_name(sheet)elif isinstance(sheet, int):self.sheet self.wb.sheet_by_index(sheet)else:raise TypeError(sheet must be int or str)except Exception as e:raise edef get_max_row(self):获取表单的最大行号max_row_num self.sheet.nrowsreturn max_row_numdef get_max_column(self):获取表单的最大列号min_row_num self.sheet.ncolsreturn min_row_numdef get_cell_value(self, row, column):获取某个单元格的数据if isinstance(row, int) and isinstance(column, int):values self.sheet.cell(row-1, column-1).valuereturn valueselse:raise TypeError(row and column must be type int)def get_row_values(self, row):获取某一行的数据if isinstance(row, int):values self.sheet.row_values(row-1)return valueselse:raise TypeError(row must be type int)def get_column_values(self, column):获取某一列的数据if isinstance(column, int):values self.sheet.col_values(column-1)return valueselse:raise TypeError(column must be type int)def get_table_title(self):获取表头table_title self.get_row_values(1)return table_titledef get_all_values_dict(self):获取所有的数据不包括表头返回一个嵌套字典的列表max_row self.get_max_row()table_title self.get_table_title()value_list []for row in range(2, max_row):values self.get_row_values(row)value_list.append(dict(zip(table_title, values)))return value_listdef get_all_values_nametuple(self):获取所有的数据不包括表头返回一个嵌套命名元组的列表table_title self.get_table_title()max_row self.get_max_row()excel namedtuple(excel, table_title)value_list []for row in range(2, max_row):values self.get_row_values(row)e excel(*values)value_list.append(e)return value_listdef write_value(self, sheet_index, row, column, value):写入某个单元格数据if isinstance(row, int) and isinstance(column, int):if isinstance(sheet_index, int):wb copy.copy(self.wb)worksheet wb.get_sheet(sheet_index)worksheet.write(row-1, column-1, value)wb.save(self.filename)else:raise TypeError({} must be int.format(sheet_index))else:raise TypeError({} and {} must be int.format(row, column))if __name__ __main__:pe ParseExcel(testdata.xls, testcase)print(最大行号:, pe.get_max_row())print(最大列号:, pe.get_max_column())print(第2行第3列数据:, pe.get_cell_value(2, 3))print(第2行数据, pe.get_row_values(2))print(第3列数据, pe.get_column_values(3))print(表头:, pe.get_table_title())print(所有的数据返回嵌套字典的列表:, pe.get_all_values_dict())print(所有的数据返回嵌套命名元组的列表:, pe.get_all_values_nametuple())pe.write_value(0, 1, 3, test) 三、pandas pandas是一个做数据分析的库 总是感觉在自动化测试中使用pandas解析excel文件读取数据有点大材小用不论怎样吧还是把pandas解析excel文件写一下把 我这里只封装了读写的话我这有点小问题后面改好再追加代码吧。 请先pip install pandas安装pandas 封装代码 import pandas as pd class ParseExcel(object):def __init__(self, filename, sheet_nameNone):try:self.filename filenameself.sheet_name sheet_nameself.df pd.read_excel(self.filename, self.sheet_name)except Exception as e:raise edef get_row_num(self):获取行号组成的列表, 从0开始的row_num_list self.df.index.valuesreturn row_num_listdef get_cell_value(self, row, column):获取某一个单元格的数据try:if isinstance(row, int) and isinstance(column, int):cell_value self.df.ix[row-2, column-1] # ix的行参数是按照有效数据行且从0开始return cell_valueelse:raise TypeError(row and column must be type int)except Exception as e:raise edef get_table_title(self):获取表头 返回列表table_title self.df.columns.valuesreturn table_titledef get_row_value(self, row):获取某一行的数据 行号从1开始try:if isinstance(row, int):row_data self.df.ix[row-2].valuesreturn row_dataelse:raise TypeError(row must be type int)except Exception as e:raise edef get_column_value(self, col_name):获取某一列数据try:if isinstance(col_name, str):col_data self.df[col_name].valuesreturn col_dataelse:raise TypeError(col_name must be type str)except Exception as e:raise edef get_all_value(self):获取所有的数据不包括表头, 返回嵌套字典的列表rows_num self.get_row_num()table_title self.get_table_title()values_list []for i in rows_num:row_data self.df.ix[i, table_title].to_dict()values_list.append(row_data)return values_list if __name__ __main__:pe ParseExcel(testdata.xlsx, testcase)print(pe.get_row_num())print(pe.get_table_title())print(pe.get_all_value())print(pe.get_row_value(2))print(pe.get_cell_value(2, 3))print(pe.get_column_value(Tc_title)) 总结 使用了3种方法4个库 xlrdopenpyxlxlwtpandas 操作excel文件个人感觉还是使用openpyxl比较适合在自动化中使用当然不同人有不同选择用哪个区别也不是很大。 以上3种方法都可以拿来直接使用不需要再做封装了 最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/912936.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php网站开发专业介绍优化关键词的方法包括

日前,浪潮商用机器有限公司宣布,旗下K1 Power服务器系列产品经过几十项基础功能和高可用功能用例的专业测试,与腾讯新兴国产分布式数据库TDSQL完美兼容,且性能优异,可进行顺利的部署、平稳的运行及对外提供服务。此次互…

培训课程设计方案阿里巴巴网站的搜索引擎优化案例

文章目录 一.冯诺依曼体系结构1.1 为什么体系结构中要存在内存?1.2 冯诺依曼瓶颈 二.操作系统2.1 设计目的2.2 系统调用与库函数 一.冯诺依曼体系结构 冯诺依曼体系结构(Von Neumann Architecture)是计算机的基本设计理念之一,由…

站长做2个网站微山网站建设多少钱

步骤:首先选择标注工具,然后右键→Parameters,在弹出来的窗口中√上如下图二所示选项 最终要达到显示单位的效果的话,需要在Text项键入%v%u。 今天就记录到这里啦O

网站建设是怎么赚钱响应式网站 768 320

文章目录 前言是什么?如何使用适用场景优点和缺点兼容性后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:前端系列文章 🐱‍👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技…

孝仙洪高速公路建设指挥部网站基金网站建设

NPDP证书至2016年引进国内,考试人数就持续增长,不仅是新产品开发唯一 的职业证书,在产品管理这一领域的知名度也在前列,那么这个证书的作用在哪里呢? 想考npdp证书,npdp干货可下载: 1、就业范围…

福建省建设厅网站施工员查询导航去浙江省肿瘤医院

有时新的服务器进行调试时,需要设置调试的launch.json的结果 然后就可以打开一个launch.json 其内容如下 {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid83…

赤峰市做网站建设的公司建设部网站官网考试

文章目录 场景描述优化思路分享资源 场景描述 接口需要从系统1查询数据,查出的每条数据需要从另一个系统2中再去查询某些字段, 比如:从系统1中查出100条数据,每条数据需要去系统2中再去查询出行数据,可能系统1一条数…

免费主机空间网站百度网站怎么做的赚钱

约数的个数 代码 # 计数 def f(x)->int:cnt 0i 1while i * i < x:if x % i 0:cnt 1if i * i < x:cnt 1i 1return cntn int(input()) a list(map(int,input().split())) for i in a:print(f(i))

徐州如何提高网站建设大田县建设资讯网站

引言配置示例负载均衡的实现负载均衡策略实现模式实现方案Nginx类型Ingress实现Treafik类型Ingress实现HAProxy类型ingress实现Istio类型ingress实现APISIX类型ingress实现 更多 引言 Ingress是Kubernetes集群中的一种资源类型&#xff0c;用于实现用域名的方式访问Kubernetes…

.NET 8 内存泄漏分析

.NET 8 内存泄漏分析Posted on 2025-09-23 15:03 WinChance 阅读(0) 评论(0) 收藏 举报https://www.cnblogs.com/1312mn/p/18353173

2025年9月16日纸质证书 - 高同学PostgreSQL管理员(中级)认证

2025年9月16日 高同学PostgreSQL中级认证证书【纸质版】为什么选择工信人才PostgreSQL认证:发证机构:工信部人才交流中心属于工信部直属的二类事业单位,证书的权威性更高;应用领域:工信人才所发的PG认证隶属于信息…

无法用sudo 启动 gparted

无法用sudo 启动 gpartedsudo gparted 无法使用 显示 Authorization required, but no authorization protocol specified(gpartedbin:16540): Gtk-WARNING **: 07:01:33.227: cannot open display: :0解决: sudo -EH…

智能体重电子秤解决方案:开发时注意事项

体重秤开发是一个硬件设计、软件开发全流程工程,需兼顾“功能实现、合规性、量产可行性”核心目标。以下从开发全阶段拆解关键注意事项,帮助规避常见风险(如精度不达标、续航不足等):一、硬件开发阶段:保障“精度…

详细介绍:新浪集团招公域场景内容产品运营负责人

详细介绍:新浪集团招公域场景内容产品运营负责人2025-09-23 15:03 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; displa…

南宁网站建设推广服务基于android的app的设计与开发

引言&#xff1a; 在当今信息时代&#xff0c;数据的处理速度和效率成为了各行各业的关注焦点。为了提高计算机程序的执行速度&#xff0c;我们需要利用计算机的多核处理能力&#xff0c;实现并行计算。Java作为一门广泛应用于企业级应用开发的编程语言&#xff0c;提供了丰富的…

做网站后台的时候要注意什么网站建设公司需要有什么东西

献给25岁你看过了许多美景你看过了许多美女你迷失在都市里每一分钟的光阴你品尝过夜的都市你看过飘着雨雪的各地你渐渐明白了书本里那些曾经不屑的道理却也在青春的激情里多出了那份胆怯的心情你看到了老板坐在办公室飘窗前&#xff0c;悠然的抽着烟你看到了以前的同学娶妻生子…

免费做网站的网页泰安有什么互联网公司

Sybase SQL Anywhere数据库具有许多非常有用的功能&#xff0c;与竞争对手相比&#xff0c;它具有很高的竞争力。首先&#xff0c;它允许您处理大量数据。其次&#xff0c;它具有很高的生产率&#xff0c;也就是说&#xff0c;可以快速提供大量数据。第三&#xff0c;它需要最少…

杭州做网站外包公司网站建设加推广

这段时间受到疫情的影响&#xff0c;本身做java开发的&#xff0c;面试了入职了一个外包公司的前端岗位&#xff0c;入职属于驻场开发的那种&#xff0c;前几周基本没啥事&#xff0c;一般经理会让你刷题&#xff0c;到了驻场那边需要机试过关才能在那边开发&#xff0c;这边在…

网站做行测题潍坊做电商的网站建设

WinCC Professional V16 支持客户机/服务器架构&#xff0c;但目前只支持单个服务器或单对冗余服务器/多个客户机的模式&#xff0c;还不能支持像WinCC V7.5 SP1中的多个服务器/多个客户机的分布式架构。 组态步骤如下&#xff1a; 1. 在项目中分别添加服务器站和客户机站&…

在百度上注册公司网站要多少钱自己怎么做直播网站吗

题目描述 聪聪和可可是兄弟俩&#xff0c;他们俩经常为了一些琐事打起来&#xff0c;例如家中只剩下最后一根冰棍而两人都想吃、两个人都想玩儿电脑&#xff08;可是他们家只有一台电脑&#xff09;……遇到这种问题&#xff0c;一般情况下石头剪刀布就好了&#xff0c;可是他们…