语言:Python 3.7
学习时间: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]
#结果文件中所有行,前面加一个空串,方便索引
rows = [''] + list(wsResult.rows)
index1 = 2
rowCount = len(rows)
#处理结果文件,合并第一列中合适的单元格
while index1 < rowCount:
value = rows[index1][0].value
#如果当前单元格没有内容,或者与前面的内容相同,就合并
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
#如果当前单元格没有内容,或者与前面的内容相同,就合并
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
#保存结果文件
wbResult.save(fn)
print("It works!")