目标:在多人协作的环境下,实行一键合并多个excel
缺陷:不能保留excel的格式,没有考虑图标之类
环境:
python3.7
openpyxl 2.5.5
思路如下:
1.获取文件夹下的所有excel的文件名
2.通过for循环遍历excel文件,openpyxl.load_workbook载入excel文件
3.新建一个excel文件用于存储合并后的文件
4.获取excel表里的sheet页,将sheet页和合并文件对比,如果存在,直接合并,如果不存在,则在合并文件中新建一个同名sheet
代码比较简单,直接上!
import openpyxl
import os
def getfile():
filenames = os.listdir('.')
mf = []
for filename in filenames:
if 'xlsx' in filename:
mf.append(filename)
return mf
def copyxl(wb,f):
wb1 = openpyxl.load_workbook(f)
wb1names = wb1.sheetnames
wbnames = wb.sheetnames
for name in wb1names:
if name not in wbnames:
wb.create_sheet(name)
ws = wb[name]
maxr = 0
else:
ws = wb[name]
maxr = ws.max_row
ws1 = wb1[name]
for m in range(1,ws1.max_row+1):
for n in range(97,97+ws1.max_column):
n = chr(n)
i = '%s%d' % (n,m)
j = '%s%d' % (n,maxr+m)
cell = ws1[i].value
ws[j].value = cell
wb.save('merge.xlsx')
wb1.close()
def mergexl():
wb =openpyxl.Workbook()
filenames = getfile()
for f in filenames:
copyxl(wb,f)
wb.close()
if __name__ == '__main__':
mergexl()