Python openpyxl筛选特定列及合并单元格处理
本文介绍如何使用Python openpyxl库筛选Excel中符合条件的列并处理合并单元格。通过正则表达式解析单元格范围,利用column_index_from_string判断列索引是否大于15以决定是否保留,并将筛选后的单元格在新表单中重新合并。
由于需要复制Excel中部分单元格的格式,因此需对合并单元格进行筛选,以选出符合特定条件的单元格。
例如,保留数值小于15的列。
随后在新建的工作表中执行相关操作。
wbsheet_new.merge_cells(cell2)
其中,表示新工作表,[[wp:cell2]]为筛选后保留的单元格,其格式类似于[[wp:I24:J24]]或[[wp:K24:L24]]。
首先使用正则表达式进行筛选,结果形式为包含元组的列表,如[[wp:[('AO', 'AP')]]]。接着通过[[wp:result[0][0]]]提取第一个元素。
若列索引大于15。
column_index_from_string(result[0][0])>=15
则将该列去除,其余列予以保留。
from openpyxl.utils import get_column_letter, column_index_from_string
import re
s=['AK23:AL23',
'AM23:AN23',
'AO23:AP23',
'AQ23:AR23',
'B24:C24',
'D24:F24',
'G24:H24',
'I24:J24',
'K24:L24',
'M24:N24',
'Q24:R24',
'S24:U24',
'V24:W24',
'X24:Y24',
'Z24:AA24',
'AB24:AC24',
'AF24:AG24',
'AH24:AJ24',
'AK24:AL24',
'AM24:AN24',
'AO24:AP24',]
for si in s:
result=re._compile(r'(\w+?)\d+:(\w+?)\d+',flags=0).findall(si)
print (result)
if column_index_from_string(result[0][0])>=15:
print('去掉%s'%result[0][0])
补充说明:在Python openpyxl中获取合并单元格列表,并筛选以解除单元格合并状态。
具体代码如下:
#获取该表所有合并单元格信息并遍历
for i in ws.merged_cell_ranges:
#获取合并单元格的开始行、列,结束行、列
r1, r2, c1, c2 = i.min_row, i.max_row, i.min_col, i.max_col
#解除合并
ws2.unmerge_cells(start_row = r1, end_row = r2, start_column = c1, end_column = c2)
以上为个人经验分享,旨在提供参考。如有错误或未考虑周全之处,欢迎指正。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









