語言:Python 3.7
學(xué)習(xí)時(shí)間:4天
適用工作:將第一列和第二列合適的單元格合并
參考文檔:https://www.jb51.net/article/137775.htm
# -*- coding: utf-8 -*-
"""
Created on Fri Aug 9 10:55:18 2019
@author: zbliuA
"""
import openpyxl
from os import listdir
for fn in (fns for fns in listdir() if fns.endswith('.xlsx')):
wbResult = openpyxl.load_workbook(fn)
wsResult = wbResult.worksheets[0]
#結(jié)果文件中所有行,前面加一個(gè)空串,方便索引
rows = [''] + list(wsResult.rows)
index1 = 2
rowCount = len(rows)
#處理結(jié)果文件,合并第一列中合適的單元格
while index1 < rowCount:
value = rows[index1][0].value
#如果當(dāng)前單元格沒有內(nèi)容,或者與前面的內(nèi)容相同,就合并
for index2,row2 in enumerate(rows[index1+1:],index1+1):
if not (row2[0].value == None or row2[0].value==value):
break
else:
#已到文件尾,合并單元格
wsResult.merge_cells('A'+str(index1)+':A'+str(index2))
break
#未到文件尾,合并單元格
wsResult.merge_cells('A'+str(index1)+":A"+str(index2-1))
index1= index2
index1 = 2
while index1 < rowCount:
value = rows[index1][1].value
#如果當(dāng)前單元格沒有內(nèi)容,或者與前面的內(nèi)容相同,就合并
for index2,row2 in enumerate(rows[index1+1:],index1+1):
if not (row2[1].value == None or row2[1].value==value):
break
else:
#已到文件尾,合并單元格
wsResult.merge_cells('B'+str(index1)+':B'+str(index2))
break
#未到文件尾,合并單元格
wsResult.merge_cells('B'+str(index1)+":B"+str(index2-1))
index1= index2
#保存結(jié)果文件
wbResult.save(fn)
print("It works!")