将文件夹下所有excel文件中的内容写入到新的excel文件

每日出货都记录在一张excel表格中,月底对账需要一张汇总的清单,手动复制粘贴太繁琐了,写个小工具自动将所有数据提取出来汇总到新的文件中

一、思路(因为是自己用,所以简单想了,能用就行)
1、先找到出货记录的文件夹,因为一份出货就是一张excel文件,所以文件夹下有很多excel文件,首先能遍历出文件夹下所有excel文件,这个直接os.listdir(“文件夹路径”)就可以了
2、将遍历出来的excel文件名组合成绝对路径
3、有了excel文件的绝对路径,就可以用openpyxl一个个的读取内容
4、每个excel文件中不止一个产品,所以需要循环读取,读到某一行一列是空格,就说明当前excel文件读完了,再读下一个excel文件
5、汇总写入新的excel文件,我是读一行写一行,一行7列内容,所以又需要在每行写完7列后换行写

二、代码

import openpyxl
import os
import re
import time


def excel_mk_dir(mk_name):
    desktop_dir = "C:\\Users\\Administrator\\Desktop\\"   # 桌面地址
    path = desktop_dir + mk_name   # 文件夹在桌面的全路径
    excel_dir = os.listdir(path)   # 获取文件夹下面的所有文件
    excel_dir_new = []
    # 判断文件夹下面是否有”~$“的临时文件,没有~$的提取出来做成新的文件列表
    for k in range(0, len(excel_dir)):
        if '~$' not in excel_dir[k]:
            excel_dir_new.append(excel_dir[k])
    # 循环取出文件夹下面的文件名,并将文件名组合到绝对路径下面
    excel_path_list = []
    for i in range(0, len(excel_dir_new)):
        aaaa = re.findall(".*?xlsx", str(excel_dir_new[i]))
        # print(aaaa)
        excel_path = path + aaaa[0]
        excel_path_list.append(excel_path)
    return excel_path_list  # 返回某文件夹下面所有文件的全路径


def manage_excel_file_content_1(mk_name):
    row_i = 2  # 新文件第2行开始写,每次写完一行后+1,好换行写
    excel_file_path = excel_mk_dir(mk_name)
    # print(excel_file_path)
    new_file = openpyxl.Workbook()  # 使用openpyxl写入新的excel文件中
    new_file_sheet = new_file.active  # openpyxl写入对象
    t = time.localtime()
    t1 = time.strftime("%Y-%m-%d", t)  # 取年月日作为文件名
    new_file_name = "XXX客户名称%s" % t1
    # 文件循环
    for i in range(0, len(excel_file_path)):
        excel_file = openpyxl.load_workbook(excel_file_path[i])  # 使用openpyxl循环打开excel文件
        # print(excel_file)
        excel_sheet = excel_file['Sheet1']
        # 做个循环判断,当第1列某行数据为空时,说明当前文件里面的数据已取到最后一个了,跳出取值循环,进文件循环里

        for k in range(8, 200):  # k表示行数,这里从第八行开始取,数据不多,所以最大取200
            excel_data = excel_sheet.cell(row=k, column=1).value
            # 第k行第1列数据为空,结束当前循环
            if excel_data is None:
                break
            else:
                for j in range(1, 8):  # 这里是列数,每行只取1-7列的值
                    data = excel_sheet.cell(row=k, column=j).value  # 取出读文件的值
                    new_file_sheet.cell(row_i, j).value = data  # 将读文件值写入新文件,openpyxl读写都是用cell()方法
                row_i += 1  # 记录已写入多少行了,循环结束+1
    new_file.save(new_file_name + ".xlsx")  # 新文件保存


if __name__ == '__main__':
    mk_name_wksyh_1 = "XXX客户\\"  # 文件夹名称
    manage_excel_file_content_1(mk_name_wksyh_1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值