合并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