python openpyxl筛选某些列的操作

由于要复制excel 的某些单元格格式,需要对合并的单元格选出符合条件的

如下例是小于15的保留

然后在新表单中

wbsheet_new.merge_cells(cell2)

wbsheet_new为新表单,cell2为筛选后保留的单元格,表达为I24:J24,K24:L24这样的格式

先正则筛选,筛选的结果为[(‘AO\’, ‘AP\’)]这种list包含元组的表达方式,再用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)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容