Python自动合并Excel工作簿(并将脚本打包成exe文件)

合并Excel工作簿:

准备:安装第三方包xlrd、pandas以及openpyxl

合并文件名有规律的工作簿(union1.py):

# 导入要用到的相关包
import os
import xlrd
import pandas as pd

print('请输入待合并工作簿文件所在的路径:')
path = input()      # 待输入合并工作簿总的路径
data = []                                       # 构造一个用于存放数据的空列表
for i in range(1,5):
    wk_n = path + '\\order' + str(i) + '.xlsx'  # 构造每个待合并工作簿的路径
    xlsx = xlrd.open_workbook(wk_n)             # 打开工作簿
    sht1 = xlsx.sheet_by_index(0)               # 找到第一个工作表
    nrow = sht1.nrows                           # 提取工作簿中第一个工作表中的数据行数
    title = sht1.row_values(0)                  # 查看工作表中的第一行数据
    for j in range(1,nrow):                     # 将工作表中的每行数据依次添加到列表data中
        data.append(sht1.row_values(j))

# 将列表data转化为DataFrame对象
content= pd.DataFrame(data)

# 修改DataFrame对象的标题
content.columns= title

# 将DataFrame对象content写入新的Excel工作簿中
content.to_excel(path+'\\py_union.xlsx', header=True, index=False)

print('合并完成!')

合并文件名无规律的工作簿(union2.py):

# 导入要用到的相关包
import os
import xlrd
import pandas as pd 

#构造获取所有需要合并的工作簿路径并生成路径列表的函数
def file_name(file_dir): 
    list=[]   # 构造一个用于存放文件名(包括扩展名)的空列表
    for file in os.listdir(file_dir):              # 遍历文件夹file_dir下的所有文件
        if os.path.splitext(file)[1] == '.xlsx':   # 筛选出扩展名是.xlsx的所有文件
            list.append(file)                      # 将文件扩展名是.xlsx的所有文件的文件名存放到列表list中  
    return list 

print('请输入待合并工作簿文件所在的路径:')
path = input()      # 待输入合并工作簿总的路径
wks = file_name(path)                              # 通过file_name函数获取path路径下所有xlsx文件的文件名

data = []   #定义一个空列表对象
for i in range(len(wks)):
    read_xlsx = xlrd.open_workbook(path + '\\' + wks[i])   # 根据path和文件名合并每个待合并工作簿的路径
    sheet1 = read_xlsx.sheets()[0]                         # 找到工作簿中的第一个工作表
    nrow =  sheet1.nrows                                   # 提取出第一个工作表中的数据行数
    title = sheet1.row_values(0)                           # 提取出第一个工作表中的表头
    for j in range(1,nrow):                                # 逐行将工作表中的数据添加到空列表data中
        data.append(sheet1.row_values(j))

# 将列表data转化为DataFrame对象
content= pd.DataFrame(data)

# 修改DataFrame对象的标题
content.columns= title

# 将DataFrame对象content写入新的Excel工作簿中
content.to_excel(path+'\\py_union2.xlsx', header=True, index=False)

print('合并完成!')

将合并Excel工作簿的Python代码打包成EXE文件:

准备:利用pip在线安装打包工具pyinstaller3.3和第三方包pywin32(224)

具体打包方法可以参考[2]和[3],[2]中安装pywin32用的离线本地安装的方法,笔者经过测试发现直接使用pip在线安装pywin32也可以。准备条件完成后,在union2.py的基础上生成exe文件,当双击exe文件时发现报错No module named 'pandas._libs.skiplist',笔者参照博客[3]中的方法解决了此问题。

另:打包的python代码的版本是Python3.6.4

 

参考:

[1] https://zhuanlan.zhihu.com/p/35613535

[2] https://blog.csdn.net/qq_35203425/article/details/78568141

[3] https://blog.csdn.net/qq_42063091/article/details/82423221

 

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值