python实现Excel数据的批量(546个数据文件)合并及windows批量改名(附源代码)

一、你们有没有遇到这种情况?

python实现Excel数据的批量(546个数据文件)合并及windows批量改名(附源代码)_第1张图片
546个excel文件需要合并,怎么办?

一个一个复制?时间来不及!

还是。。。想 想 别 的 招!

人 生 苦 短,我 有 python!

这个问题如果使用python做批处理,会有意想不到的效果!

往下看。。。。。。

二、基于windows系统的文件命名批处理

程序实现固然方便,但也是很笨拙的,我们需要对文件进行批处理,使得命名具有一定的规则,刚好,windows系统提供了一个解决方案。
1、将文件全部选中
2、右键单击第一个文件→重命名
3、输入文件名称(比如:test)
4、形成test (1)→test (546),546个文件
python实现Excel数据的批量(546个数据文件)合并及windows批量改名(附源代码)_第2张图片

三、基于python实现文件合并(附源代码讲解,直接复制即可)

import xlrd,xlsxwriter

url = "C:/Users/你杰哥/Desktop/python/excel"#修改为你的文件所在路径
office_file_name = "test"#修改为你使用的文件名,如前文
file_format = 'xlsx'#修改为你的数据格式
quantity = 546#修改为你的数据文件数量
allxls = []#列表
for i in range(1,quantity+1):#for循环实现多文件路径
    url_build = str(url) + "/" + str(office_file_name) + " (" + str(i) + ")." + str(file_format)
    allxls.append(url_build)
print(allxls)#先打印下看看对不对,也可删去


#目标excel
end_xls=url + "/final_excel.xlsx"#最终文件的存储路径

#函数,打开文件
def open_xls(file):
    try:
        fh=xlrd.open_workbook(file)
        return fh
    except Exception as e:
        print("打开文件错误:"+e)


#根据excel名以及第几个标签信息就可以得到具体标签的内容
def get_file_value(filename,sheetnum):
    rvalue=[]
    fh=open_xls(filename)
    sheet=fh.sheets()[sheetnum]
    row_num=sheet.nrows
    for rownum in range(0,row_num):
        rvalue.append(sheet.row_values(rownum))
    return rvalue
#获取第一个excel的sheet个数以及名字作为标准
first_file_fh=open_xls(allxls[0])
first_file_sheet=first_file_fh.sheets()
first_file_sheet_num=len(first_file_sheet)
sheet_name=[]
for sheetname in first_file_sheet:
    sheet_name.append(sheetname.name)
#定义一个目标excel
endxls=xlsxwriter.Workbook(end_xls)
all_sheet_value=[]
#把所有内容都放到列表all_sheet_value中
for sheet_num in range(0,first_file_sheet_num):
    all_sheet_value.append([])
    for file_name in allxls:
        print("正在读取"+file_name+"的第"+str(sheet_num+1)+"个标签...")
        file_value=get_file_value(file_name,sheet_num)
        all_sheet_value[sheet_num].append(file_value)


num=-1
sheet_index=-1

#将列表all_sheet_value的内容写入目标excel
for sheet in all_sheet_value:
    sheet_index+=1
    end_xls_sheet=endxls.add_worksheet(sheet_name[sheet_index])
    num+=1
    num1=-1
    for sheet1 in sheet:
        for sheet2 in sheet1:
            num1+=1
            num2=-1
            for sheet3 in sheet2:
                num2+=1
                end_xls_sheet.write(num1,num2,sheet3)


endxls.close()

四、运行结果

1、ctrl+B
python实现Excel数据的批量(546个数据文件)合并及windows批量改名(附源代码)_第3张图片
2、Excel文件python实现Excel数据的批量(546个数据文件)合并及windows批量改名(附源代码)_第4张图片
python实现Excel数据的批量(546个数据文件)合并及windows批量改名(附源代码)_第5张图片
用时16.9s,复制的话,得半小时。。。
不说了,做了半天,头疼!!!希望大家能用得上!!!

五、总结

Python的设计哲学是“优雅”、“明确”、“简单”,让代码具备高度的可阅读性和观赏性。即使完全没有编程基础,python的逻辑和语言表达也能很快接受,并应用于日常的工作和学习中。
关于本文,有什么问题,请在下方留言提问!

你可能感兴趣的:(python)