使用xlrd库读取Excel自定义sheet表内容,以字典格式输出

2023-11-10

如题描述,如何根据自定义的worksheet读取工作表内容呢,对于参数化数据时如果能做到这个是有一定好处的。当然也有其他不同路径的处理方法也是可以的,想要过程完美需要时间打磨的呀。今天分享xlrd库的用法,根据自定义的sheet读取表格内容。

xlrd对Python3支持的版本建议使用xlrd==1.2.0,安装完成需要修改下源文件的iteration() 替换为iter() 一共两处。

下面是实现逻辑:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2022/1/12 16:55
# @Author  : Wang jianhua
# @Site    : 
# @File    : readCustomerData.py
# @Software: PyCharm

import xlrd
from commonUtils.Log import Log

class ReadExcelAllSheets:
    '''读取指定工作表内容'''
    def __init__(self,file_path):
        '''
        :param file 文件名
        '''
        self.work_file = xlrd.open_workbook(file_path)
        self.sheet_name = self.work_file.sheet_names()

    # 获取目录下所有Excel中sheet
    def get_customer_sheet(self,worksheet=None):  #默认全部
        #遍历路径下的文件(暂时不用)
        # for excel in os.listdir(data_path):  # os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表
        #     print("excel path:{}".format(excel))
        #     if excel.startswith('~'):
        #         break
        #     excelPath = os.path.join(data_path, excel)  # 拼接路径
        Log.info('All sheet: {}'.format(self.sheet_name))
        # 循环从sheetNames中读取sheet表,返回sheet的内存地址
        data = []
        if worksheet==None: #如果等于None则读取全部sheet表内容
            print("读取全部工作表内容")
            for sheet in self.sheet_name:
                table = self.work_file.sheet_by_name(sheet)
                if table.nrows>1:
                    for j in range(1,table.nrows):
                        data.append(dict(zip(table.row_values(0), table.row_values(j))))  # 前面时key(默认首行),后面为每列对应的值
                    return data
                else:
                    Log.info("表格为空")
        else:
            print("读取指定工作表内容")
            for sheet in worksheet:
                table = self.work_file.sheet_by_name(sheet)
                if table.nrows >1:
                    for j in range(1,table.nrows):  #
                        data.append(dict(zip(table.row_values(0), table.row_values(j))))  # 前面时key(默认首行),后面为每列对应的值
                    return data
                else:
                    Log.info("表格为空")
file1="D:\test.xlsx"
worksheet=["Sheet1","Sheet2"]
print("指定sheet数据: {}".format(ReadExcelAllSheets(file1).get_customer_sheet(worksheet=worksheet)))

get_customer_sheet()该方法中的参数一定是list,因为工作表是list。如果是取一个工作表内容可以传入worksheet=["Sheet1"],默认可以不传,取全部工作表内容,详见代码。

这样在数据驱动时可以借鉴这种写法,欢迎吐槽,互相学习~~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用xlrd库读取Excel自定义sheet表内容,以字典格式输出 的相关文章

随机推荐

  • 利用shell bash脚本实时监控weblogic运行情况

    testWeblogic sh test cfg testWeblogic config test log result log weblogic log 主要用到了expect远程登录工具用来获取进程id和cpu消耗以及weblogic提
  • IT技能图谱

    成长的因素有很多 你知道知识图谱的作用吗 本文GET了当下最热门 最火爆的技术知识点 让你一库在手 技术全有 众所周知 我们的每个知识库都是邀请专家精心绘制图谱 并依据每个图谱的知识结构 筛选该技术分支知识点下的优质资源 经特邀编辑一一审核
  • LeetCode75:矩阵查找(二分查找)

    题目描述 请写出一个高效的在m n矩阵中判断目标值是否存在的算法 矩阵具有如下特征 每一行的数字都从左到右排序 每一行的第一个数字都比上一行最后一个数字大 例如 对于下面的矩阵 1 3 5 7 10 11 16 20 23 30 34 50
  • python踩过的坑之py文件命名导致导入包错误

    用python编程 一定要注意命名 今天为大家分享一个小错误 当执行import module时 解释器会根据下面的搜索路径 搜索module1 py文件 1 当前工作目录 2 PYTHONPATH中的目录 3 Python安装目录 usr
  • numpy中的cumsum()函数的使用

    关于numpy cumsum 在官网中官方给了一个很好的例子 cumsum的作用主要就是计算轴向的累加和 里面最重要的参数就是axis 当里面的参数axis没有值时 默认是一个一维数组进行加和 即 a np array 1 2 3 4 5
  • Java面试之Git与Maven面试题

    1 Git 是什么 它有什么作用 Git 是一种分布式版本控制系统 用于管理源代码的变更和追踪 它可以记录文件更改的历史 帮助多人协同开发 并提供了回滚 分支管理等功能 2 Git 和 SVN 或其他版本控制系统 有什么区别 SVN 是集中
  • kotlin Array和可变参数vararg之间互转

    可变参数可以直接赋值给array array转可变参数 在使用array时前面加上 传播符号 spread operator 举个例子 val array Array
  • VisualVM使用方法

    1 VisualVM 简介 VisualVM 是一个工具 它提供了一个可视界面 用于查看 Java 虚拟机 Java Virtual Machine JVM 上运行的基于 Java 技术的应用程序 Java 应用程序 的详细信息 Visua
  • 参数估计(点估计和区间估计)

    参数估计是以抽样分布为中介 用样本的参数特征对总体的参数进行数值估计的过程 一 点估计 1 点估计就是用样本统计量来估计总体参数 概念理解 当我们想知道某一总体的某个指标的情况时 测量整体该指标的数值 的工作量太大 或者不符合实际 这时我们
  • Go 编译 build 然后run遇到的问题

    首先 吐槽一下 https go zh org doc code html 这个官网如何编译 Go代码必须放在工作空间内 它其实就是一个目录 其中包含三个子目录 src 目录包含Go的源文件 它们被组织成包 每个目录都对应一个包 pkg 目
  • java deletecharat_Java StringBuffer.delete/deleteCharAt 删除字符

    首页 gt 基础教程 gt 常用类 gt 常用 StringBuffer StringBuilder 类 Java StringBuffer delete deleteCharAt 删除字符 java中StringBuffer delete
  • vue报错sockjs-node/info?t=或者报错info?t=

    前言 整理问题记录 问题现状 相关资料 sockjs node介绍 sockjs node 是一个JavaScript库 提供跨浏览器JavaScript的API 创建了一个低延迟 全双工的浏览器和web服务器之间通信通道 服务端 sock
  • JS数组合并(5种)

    前言 项目过程中 经常会遇到 JS 数组合并的情况 时常为这个纠结 这里整理一下 简单而实用的for 最容易想到的莫过于 for 了 会变更原数组 当然也可以写成生成新数组的形式 let arr 1 2 let arr2 3 4 for l
  • window电脑通过vscode的ssh访问linux服务器-详细部署教程

    在本文中将讲述linux服务器 window电脑的详细设置 一步一步部署 教程包括 在linux服务器和window客户端ssh设置 免密设置 xming图像访问 SSH 是为建立在应用层基础上的安全协议 SSH 是目前较可靠 专为远程登录
  • leetcode--python--228

    228 汇总区间 给定一个无重复元素的有序整数数组 nums 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 也就是说 nums 的每个元素都恰好被某个区间范围所覆盖 并且不存在属于某个范围但不属于 nums 的数字 x 列表中的
  • java属于编译型还是解释型语言?

    首先要明白编译型语言和解释型语言的定义 编译型语言 把做好的源程序全部编译成二进制代码的可运行程序 然后直接运行这个程序 特点 执行速度快 效率高 依靠编译器 跨平台性差 解释性语言 把做好的源程序翻译一句 然后执行一句 直至结束 特点 执
  • BSN长话短说之六:公链如何破局

    BSN长话短说之六 公链破局 王立新 感谢各位嘉宾抽出宝贵时间参与这次对话 先简单介绍下今天出席对话嘉宾 红枣科技CEO 何亦凡 Nervos联合创始人 吕国宁 分布科技Onchain CEO Neo创始人 达鸿飞 Algorand Fou
  • 真题详解(地址索引)-软件设计(五十一)

    真题详解 单元测试 软件设计 五十 https blog csdn net ke1ying article details 130189173 spm 1001 2014 3001 5501 指令寻址方式 有四种 直接寻址 寄存器寻址 隐含
  • Rest分发监听接口

    Rest分发监听接口 一 Rest分发接口 1 创建目录 2 New XMLSchema File Name 自己根据接口定义名字 Directory 选择自己接口Schema的路径 Target Namespace 这个路径根据要求 Sc
  • 使用xlrd库读取Excel自定义sheet表内容,以字典格式输出

    如题描述 如何根据自定义的worksheet读取工作表内容呢 对于参数化数据时如果能做到这个是有一定好处的 当然也有其他不同路径的处理方法也是可以的 想要过程完美需要时间打磨的呀 今天分享xlrd库的用法 根据自定义的sheet读取表格内容