【python实战】--提取所有目录下所有Excel文件指定列数据

37 篇文章 5 订阅

系列文章目录


前言

一、问题描述

需要提取指定路径下所有excel文件中指定一列数据,汇总到新文件,(逐列汇总)

请添加图片描述

二、python代码

1.引入库

代码如下(示例):

#xlwt只支持xls格式,xlsx格式需要用openpyxl或pandas
# coding:utf-8
import pandas as pd
import os 
import xlrd
import xlwt
from xlutils.copy import copy
from openpyxl import workbook
from openpyxl import load_workbook
# 读写2007 excel
import openpyxl
 

def get_allfile_msg(file_dir):
    for root, dirs, files in os.walk(file_dir):
        return root, dirs, [file for file in files if file.endswith('.xls') or file.endswith('.xlsx')]

def get_allfile_url(root, files):
    allFile_url = []
    for file_name in files:
        file_url = root + "/" + file_name
        allFile_url.append(file_url)
    return allFile_url

def get_file_name(path, suffix = ['.xlsx', '.xls']):
    tmp_lst = []
    for root,dirs,files in os.walk(path):
        for file in files:
            tmp_lst.append(os.path.join(root, file))
    return tmp_lst

 
if __name__ == '__main__':
    #file_dir = os.getcwd()
    file_dir = r"E:\py\python3.7\test-advance\test04\data"
    root, dirs, files = get_allfile_msg(file_dir)
    allFile_url = get_allfile_url(root, files)
    print(root)
    print(dirs)
    number = len(dirs)
    print(number)
    n = 0
    #**********************************************************
    jieguo = xlwt.Workbook(encoding="ascii")  #生成excel
    wsheet = jieguo.add_sheet('sheet name') #生成sheet    
    y=0 #生成的excel的行计数
    keyword = 'L<1.2'
    #**********************************************************
    for n in range(len(dirs)):
        dir = dirs[n]
        path = root + '\\' + dir
        print(path) 
        tmp_lst = get_file_name(path)
        print(tmp_lst)
        #main()
        #'''
        try:
            for xl in tmp_lst:
                workbook = xlrd.open_workbook(xl) #读取源excel文件
                print(xl)
                sheetnum=workbook.nsheets  #获取源文件sheet数目
                print(sheetnum)
                #for m in range(0,sheetnum):
                sheet = workbook.sheet_by_index(0) #读取源excel文件第m个sheet的内容
                nrowsnum=sheet.nrows  #获取该sheet的行数
                ncolsnum=sheet.ncols  #获取该sheet的列数

                date = sheet.col(3)
                y = y + 1 
                for j in range(len(date)):
                    wsheet.write(j,y,sheet.cell_value(j,3))

        #jieguo.save('jieguo.xls') #保存新生成的Excel
        except Exception as e:
            print(e)                        
        #jieguo.save('jieguo.xls') #保存新生成的Excel        
        #'''
        n =  n + 1
        y = y + 1
        jieguo.save('jieguo.xls') #保存新生成的Excel   


总结

分享
如果我们有意无意地卷入某种旋涡,那我们的大脑很快就会塞满乱七八糟的东西, 弄得我们头昏眼花,心乱如麻,我们的身心会很累。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答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。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

若竹之心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值