针对合并多个Excel工作簿或多个工作簿,我们可以使用os,openpyxl库进行实现。
其中list_sh = old_sh.iter_rows(values_only=True)中values_only可以选择True,直接导出单元格的value值
import os
import openpyxl
path_ = input("请输入需要合并Excel文件的文件夹路径:")
wb_new = openpyxl.Workbook()
sheets = wb_new.active
sheets.title = '合并数据'
if os.path.isfile(path_):
cell_bg = int(input('请输入Excel表头的行数:'))
path_2 = input('请输入保存的路径:')
sh_name_2 = input('请输入保存的名称:')
wb_old = openpyxl.load_workbook(path_)
sh_old_list = wb_old.sheetnames
for sh in sh_old_list:
old_sh = wb_old[sh]
print(old_sh)
if sheets.max_row == 1:
list_sh = old_sh.iter_rows(values_only=True) # iter_rows()中values_only=True表示返回单元格的值,false 表示返回生成器
else:
list_sh = old_sh.iter_rows(min_row=cell_bg + 1, values_only=True)
# list_sh=[[],[],[]]
for i in list_sh:
sheets.append(i)
if sh_name_2 == '':
sh_name_2 = '合并数据'
if path_2 == '':
path_2 = path_.rsplit('\\', 1)[0]
wb_new.save(path_2 + '\\' +'{}.xlsx'.format(sh_name_2))
else:
sh_name = input('请输入需要合并的工作表名称:')
cell_bg = int(input('请输入Excel表头的行数:'))
path_2 = input('请输入保存的路径:')
sh_name_2 = input('请输入保存的名称:')
# 获取文件夹中的文件名称
list_ex = os.listdir(path_)
for ls in list_ex:
print('正在合并{}'.format(ls))
wb_old = openpyxl.load_workbook(path_ + '\\' + ls)
old_sh = wb_old[sh_name]
# 判断当前工作表是否为第一个工作表,若不是则从表头后的下一行开始
if sheets.max_row == 1:
list_sh = old_sh.iter_rows(values_only=True) # iter_rows()中values_only=True表示返回单元格的值,false 表示返回生成器
else:
list_sh = old_sh.iter_rows(min_row=cell_bg + 1, values_only=True)
# list_sh=[[],[],[]]
for i in list_sh:
sheets.append(i)
if path_2 == '':
path_2 = path_
if sh_name_2 == '':
sh_name_2 = '合并数据'
wb_new.save(path_2 + '\\' + '{}.xlsx'.format(sh_name_2))
print('合并完成.....')
stop_ = input('输入任意键值关闭窗口........')