python读取指定目录下Excel表所有sheet的数据

最近想尝试着做一个接口自动化的脚本,首先得需要从文件中读取数据,很早之前更新过一篇,但是局限性较大,一次性只能读取一个Excel的一张sheet表,且读取出的格式也无法满足要求,找了好多方法,终于研究出来啦。

也遇到了很多坑,因为自学python,没有系统的学习过,基础知识也不扎实,且平时工作也没有用到,过段时间就需要从头学起 =_=,所以遇到的坑都是基础知识没掌握到的原因啦。记录一下吧,方便以后复习或知识回顾。

现在是坑:

def getTables():
    for excel in os.listdir(data_path):
        print(excel)
        if excel.startswith('~'):
            break
        excelPath = os.path.join(data_path, excel)
        excels = xlrd.open_workbook(excelPath)
        sheetNames = excels.sheet_names()
        print('sheetNames:',sheetNames)
        return sheetNames #这儿我就直接把获取到的sheet名return了,这是一个list类型

def getData(sheets):
    data = []
    for i in range(2, sheets.nrows):#写这儿的时候,sheets无法自动带出nrows,强行写上去也会报错
        data.append(dict(zip(sheets.row_values(1), sheets.row_values(i))))
    print('读取出的data:',data)

getData(getTables())

一直提示这个:

既然list没有这个方法,len()也可以获取所有的行数啊,所以我就换成了len(),这样:

def getData(sheets):
    data = []
    for i in range(2, len(sheets)):
        data.append(dict(zip(sheets.row_values(1), sheets.row_values(i))))
    print('读取出的data:',data)

 然而还是不行:

于是再回头看了下之前写的test,恍然大悟:

附上正确的代码

import os,xlrd

data_path = os.path.join('F:\pythonProjrect\itf_simple','data')#os.path.join()函数:连接两个或更多的路径名
print(data_path)

#获取目录下所有Excel中sheet
def getTables():
    for excel in os.listdir(data_path):#os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表
        print(excel)
        if excel.startswith('~'):
            break
        excelPath = os.path.join(data_path, excel)#拼接路径
        excels = xlrd.open_workbook(excelPath)
        sheetNames = excels.sheet_names()#获取目录下所有sheet的名字,sheetNames为list类型
        print('sheetNames:',sheetNames)
        # 循环从sheetNames中读取sheet表,返回的是sheet的内存地址
        for sheet in sheetNames:
            table = excels.sheet_by_name(sheet)
        print('table:',table)
        return table
#从getTables()中返回的table中提取数据,sheet中的数据组成一个列表,Excel中的表头和数据分别组成key:value的格式
def getData(sheets):
    data = []
    for i in range(2, sheets.nrows):
        data.append(dict(zip(sheets.row_values(1), sheets.row_values(i))))
    print('读取出的data:',data)

getData(getTables())

这样就运行出来啦~

  • 8
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 要实现Python读取指定目录下的所有Excel文件内容并存储到数据库,首先需要安装相关的Python库,如pandas和openpyxl。 步骤如下: 1. 导入所需的库: ``` python import os import pandas as pd from openpyxl import load_workbook import sqlite3 ``` 2. 连接数据库: ``` python conn = sqlite3.connect('example.db') cursor = conn.cursor() ``` 3. 获取指定目录下的所有Excel文件: ``` python path = '指定路径' files = os.listdir(path) excel_files = [file for file in files if file.endswith('.xlsx') or file.endswith('.xls')] ``` 4. 读取Excel文件内容并存储到数据库: ``` python for file in excel_files: excel_path = os.path.join(path, file) df = pd.read_excel(excel_path, sheet_name='工作名称') for index, row in df.iterrows(): # 获取每一行数据并插入数据库 cursor.execute("INSERT INTO 名 (列名1, 列名2, 列名3, ...) VALUES (?, ?, ?, ...)", tuple(row)) ``` 5. 提交并关闭数据库连接: ``` python conn.commit() cursor.close() conn.close() ``` 需要根据实际情况修改相应的代码,如数据库连接和操作的名、列名等。同时,如果Excel文件有多个工作,可以根据需要修改`sheet_name`参数来读取不同的工作。 ### 回答2: 要实现这个功能,你可以使用Python中的os库来遍历指定目录下的所有excel文件,再使用pandas库来读取excel文件内容,并将数据存储到数据库中。 首先,你需要导入所需的库: ```python import os import pandas as pd import sqlite3 ``` 接下来,你需要连接数据库。这里以SQLite数据库为例: ```python # 连接到数据库 conn = sqlite3.connect('database.db') cur = conn.cursor() ``` 然后,你可以使用os库的`listdir`函数来获取指定目录下的所有文件名: ```python # 指定目录 directory = '/path/to/directory' # 获取目录下的所有文件名 files = os.listdir(directory) ``` 接下来,你可以使用pandas的`read_excel`函数来读取excel文件,并将数据存储到数据库中: ```python # 遍历所有文件 for file in files: # 读取excel文件 df = pd.read_excel(os.path.join(directory, file)) # 将数据存储到数据库中 df.to_sql('table_name', conn, if_exists='append', index=False) ``` 最后,记得关闭数据库连接: ```python # 关闭数据库连接 conn.close() ``` 这样,你就可以成功将指定目录下的所有excel文件的内容存储到数据库中了。请确保在开始之前已经安装了pandas库和sqlite3库。 ### 回答3: Python可以使用pandas和sqlite3库来实现读取指定目录下的所有excel文件内容并存储到数据库。 首先,我们需要安装pandas和sqlite3库。可以使用以下命令在终端中安装它们: ``` pip install pandas pip install sqlite3 ``` 然后,我们可以按照以下步骤来实现读取指定目录下的所有excel文件内容并存储到数据库: 1. 引入必要的库: ```python import pandas as pd import os import sqlite3 ``` 2. 设置数据库连接并创建数据: ```python conn = sqlite3.connect('database.db') cursor = conn.cursor() cursor.execute('CREATE TABLE IF NOT EXISTS data (file_name TEXT, content TEXT)') ``` 3. 遍历指定目录下的所有文件,筛选出excel文件,并读取文件内容: ```python folder_path = '指定目录的路径' for file_name in os.listdir(folder_path): if file_name.endswith('.xlsx') or file_name.endswith('.xls'): file_path = os.path.join(folder_path, file_name) df = pd.read_excel(file_path) # 使用pandas读取excel文件内容 content = df.to_json() # 将内容转换为JSON字符串 cursor.execute('INSERT INTO data (file_name, content) VALUES (?,?)', (file_name, content)) ``` 4. 提交并关闭数据库连接: ```python conn.commit() conn.close() ``` 通过以上步骤,我们可以实现将指定目录下的所有excel文件内容存储到数据库中。你可以根据需要自行调整代码,并且可以将数据库连接改为其他数据库类型,如MySQL或PostgreSQL。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值