目標:在多人協作的環境下,實行一鍵合併多個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()