删除线分为两种, 一是单元格有strike属性, 另一种是单元格无strike属性, 单元格内的部分文本带有strike属性。

单元格的strike判断可以使用如下示例方法:

import openpyxlbook = openpyxl.load_workbook("test.xlsx")sheet = book.worksheets[0]for row in sheet.rows:for cell in row:if cell.font.strike:pass

当单元格无strike属性时, 由于openpyxl不支持单元格更底层的元素解析,就只能自己写excel文档的解析方法,来获取带有删除线的内容。

xlsx后缀的Excel文档是由一组xml文档压缩而成,将xlsx文档后缀改为zip,可以解压出一组xml文件。在该目录下的./xl/sharedStrings.xml中,可以通过搜索strike属性来查看带有删除线的内容格式。为了自动处理,使用正则表达式对该xml文件进行匹配,并将匹配到的删除线内容替换为空,即可实现该功能。示例代码如下:

import os
import re
import openpyxl
import zipfiledef excel_strike_content_delete(path, final_file):extract_path = os.path.join(os.path.split(path)[0], "extract_path")if os.path.exists(extract_path):shutil.rmtree(extract_path)os.mkdir(extract_path)else:os.mkdir(extract_path)f = zipfile.ZipFile(path)for file in f.namelist():f.extract(file, extract_path)f.close()xml = extract_path + '/xl/sharedStrings.xml'with open(xml, 'rt', encoding="utf-8") as f:content = f.readlines()content = "".join([line for line in content])def replace(matched):group0 = matched.group(0)group1 = matched.group(1)group2 = matched.group(2)# print(group0)res = group0.replace(group2, "<t></t>").replace(group1, "")# print("res: ", res)return respattern = r"<rPr>(<strike/>).*?</rPr>(<t>(?:.*?)</t>)"# print(type(content))line = re.sub("</si><si>", "</si>myLabel<si>", content, flags=re.S)# print(type(line))ls = line.split("myLabel")for i, line in enumerate(ls):# print("  ", line)line = re.sub(pattern, replace, line, flags=re.S)ls[i] = line# print(line)with open(xml, 'w+', encoding='utf-8') as f:f.write("".join(ls))f = zipfile.ZipFile(final_file, mode='w')for path, dirnames, filenames in os.walk(extract_path):# 去掉目标跟路径,只对目标文件夹下边的文件及文件夹进行压缩fpath = path.replace(extract_path, '')for filename in filenames:f.write(os.path.join(path, filename), os.path.join(fpath, filename))f.close()return os.path.abspath(final_file)

这样就将excel中的删除线部分删除掉了。

Python openpyxl 删除excel有删除线的文字相关推荐

  1. Python openpyxl 之 Excel 文档简单操作

    背景:生活中常常因日常工作,在记录统计方面需频繁处理较多 Excel 表格,这部分工作虽可由人工完成,但这样会显得有些繁琐且可能存在偏差,遂闲时查阅了是否有相关基于python处理Excel表格的学习 ...

  2. python openpyxl 操作 Excel

    安装openpyxl pip install openpyxl 工作簿的新建打开和保存 1,读取和保存xlsx文件(创建工作簿) import openpyxl as vb file = r'周杰伦. ...

  3. Python openpyxl打开有公式的excel表取值错误的解决办法,Python openpyxl获取excel有公式的单元格的数值错误,Python操作excel(.xlsx)封装类

    Python openpyxl打开有公式的表格,如果直接读取,会出现有公式的单元格为空或零的情况. 参见: https://blog.csdn.net/weixin_45903952/article/ ...

  4. python openpyxl 操作excel xlrd.biffh.XLRDError: Excel xlsx file; not supported错误修改

    python xlrd/openpyxl 操作excel xlrd.biffh.XLRDError: Excel xlsx file; not supported错误修改 代码: 错误: excel读 ...

  5. python openpyxl 操作excel ,使用 conditional_formatting,insert_rows

    场景 python 使用 openpyxl 操作 excel 对于简单的格式来说还是挺方便的,但是对于复杂的格式,操作没有手动来的简单,如果对于复杂的格式也不是用python来做的.对于一个原有的报表 ...

  6. python用openpyxl向excel中添加数据(文字,数据,图片等)

    利用openpyxl向excel内添加数据 excel也是利用openpyxl生成的, 并且命名为当前电脑系统时间 import os import openpyxl as op# 创建excel并返 ...

  7. python openpyxl操作Excel表格

    原创:未经允许不得转载,转载需标明出处 打算分为两个部分: 第一部分为:操作Excel表格 第二部分为:操作Excel图表 现在发布为第一部分内容 在最近的项目中的使用到了提取Android帧率日志, ...

  8. Python.openpyxl操作Excel

    Python 操作 Excel 存取数据 1. openpyxl 模块 1.1 安装 openpyxl 模块 1.2 Excel 文件的三个对象 1.2.1 Workbook 对象 1.2.2 Wor ...

  9. 用python + openpyxl处理excel(07+)文档 + 一些中文处理的技巧

    2019独角兽企业重金招聘Python工程师标准>>> 寻觅工具 确定任务之后第一步就是找个趁手的库来干活. Python Excel上列出了xlrd.xlwt.xlutils这几个 ...

  10. python2读取excel中文处理_用python + openpyxl处理excel(07+)文档 + 一些中文处理的技巧...

    最近要帮做RA的老姐写个合并excel工作表的脚本--源数据是4000+个excel 工作表,分布在9个xlsm文件里,文件内容是中英文混杂的一些数据,需要从每张表中提取需要的部分,分门别类合并到多个 ...

最新文章

  1. 网络工程师需要哪些知识_成长工程师可以教给我们哪些工程知识
  2. 张小龙向来痴,微信从此醉,复盘8年,2大初心驱动至今 | 2019实录
  3. 恶意广告活动利用 WebKit 0day 实施欺诈
  4. 1.2 文本表示——Emdedding
  5. git 操作 中文文件名的时候,显示乱码 ,解决方法
  6. Atitit httpclient feign使用总结RestTemplate Httpclient重要的功能 重试与超时 1.RedirectExec执行器的默认策略是,在接收到重定向错误码3
  7. 51单片机的矩阵键盘、跑马灯和呼吸灯设计
  8. 网易云镜像仓库选择镜像
  9. linux系统下载7.0,redhat7.0_redhat enterprise linux 7.0下载 附安装教程 - 121下载站
  10. 计算机端口连接失败,电脑telnet端口(23端口)提示连接失败怎么办?
  11. 于朦胧 机器人_机器人演戏?建议于朦胧陈钰琪这部《两世欢》改名:我的面瘫男友...
  12. oracle 更改system.dbf,oracle数据文件system01.dbf上有坏块,如何修复
  13. 3月4日作业总结,成绩
  14. 《预训练周刊》第10期:基于Swin变换器的自监督学习、基于锐度感知最小化的泛化性提升...
  15. HuaWei ❀ IP源防护概述
  16. kafka中的配额管理(限速)机制
  17. Linux使用alias设置命令别名
  18. altc财金网为你分享币圈波段操作技巧
  19. Hydra教程——非常详细
  20. Total Audio Converter(万能转换器)

热门文章

  1. 起风了用计算机按,用计算机弹起风了要点那些键
  2. htpasswd小工具生成密码
  3. 导向滤波算法原理与代码
  4. 恢复U盘分区:windows自带工具diskpart
  5. MYSQL解决科目余额表汇总问题
  6. html+css个人简历/网页界面
  7. SuperMap 三维产品白皮书
  8. [渝粤教育] 西南科技大学 中国古代文学〔2〕 在线考试复习资料
  9. 现场总线PROFIBUS-DP在风力发电系统中的应用(内附详细说明)
  10. 端到端和非端到端的Embedding,以及embedding质量评估