由于要复制excel 的某些单元格格式,需要对合并的单元格选出符合条件的
如下例是小于15的保留
然后在新表单中
1
|
wbsheet_new.merge_cells(cell2)
|
wbsheet_new为新表单,cell2为筛选后保留的单元格,表达为I24:J24,K24:L24这样的格式
先正则筛选,筛选的结果为[(‘AO', ‘AP')]这种list包含元组的表达方式,再用result[0][0]提取出第一个元素,
如果大于15列
1
|
column_index_from_string(result[ 0 ][ 0 ])> = 15
|
则去掉,其余保留
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
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 获取合并的单元格列表,筛选解除单元格合并
代码如下:
1
2
3
4
5
6
|
#获取该表所有合并单元格信息并遍历
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)
|
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/weixin_45903952/article/details/105156670