完整教程:高效Excel数据净化工具:一键清除不可见字符与格式残留

news/2025/10/6 9:25:20/文章来源:https://www.cnblogs.com/yxysuanfa/p/19127288

摘要

本文将分享一款基于Python的Excel数据净化工具,用于自动清除给定的Excel文档中指定工作表中的不可见字符、批注、单元格样式等冗余内容。脚本支持进度可视化展示,保留核心数据处理逻辑的同时确保文件格式规整,特别适用于应该规范数据格式的企业级应用场景。


架构流程图


工具脚本源码

import openpyxl
from openpyxl.styles import NamedStyle, Font, Border
from openpyxl.formatting import Rule
import re
from tqdm import tqdm # 新增进度条库
from openpyxl.styles import PatternFill
def clean_invisible_chars(text):
"""清除字符串中的不可见字符"""
if
not isinstance(text, str
):
return text
# 清除控制字符(ASCII 0-31,除了\t\n\r)
return re.sub(r'[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]'
, ''
, text)
def clear_all_and_save(input_file, output_file, sheet_name):
"""
清除工作表中的:
1. 不可见字符
2. 批注
3. 单元格样式
"""
# 已清理的列表
cleared_set = set(
)
# 加载工作簿
wb = openpyxl.load_workbook(input_file)
# 创建无样式对象
no_style = NamedStyle(name="Normal"
)
# 创建无填充对象
no_fill = PatternFill(fill_type=None
)
# 检查工作表是否存在
if sheet_name not
in wb.sheetnames:
print(f"错误: 工作表 '{
sheet_name
}' 不存在。"
)
print(f"可用工作表列表: {
', '.join(wb.sheetnames)
}"
)
return
# 获取工作表
ws = wb[sheet_name]
# 获取总行数用于进度条
total_rows = ws.max_row
first_init = True
# 使用tqdm显示进度条
for row in tqdm(ws.iter_rows(
)
, total=total_rows, desc="处理进度"
):
if first_init == True:
print(f"初始化完成,开始清理数据..."
)
# 彻底清除所有条件格式和样式
ws.conditional_formatting = []
cleared_set.add('条件格式填充色'
)
# cleared_set.add('单元格默认样式')
print(f"✔ 已彻底清理 工作表:{
sheet_name
} 的所有样式设置, 开始单元格处理..."
)
first_init = False
for cell in row:
# 彻底清除单元格所有样式
cell.fill = PatternFill(fill_type=None
)
cell.font = Font(name='Calibri'
, size=11
, bold=False
, italic=False
)
cell.border = Border(
)
cell.number_format = 'General'
# 清除不可见字符
if cell.value and isinstance(cell.value, str
):
cell.value = clean_invisible_chars(cell.value)
cleared_set.add('不可见字符'
)
# 清除批注
if cell.comment:
cell.comment = None
cleared_set.add('批注'
)
# 清除样式
cell.style = no_style
cleared_set.add('单元格样式'
)
# 清除单元格填充颜色
if cell.fill:
cell.fill = no_fill
cleared_set.add('单元格填充色'
)
# 保存工作簿到新的文件
wb.save(output_file)
# cleared_text = ", ".join(cleared_set)
cleared_text = "\n".join(f" ✔ 清除-{
item
}"
for item in cleared_set)
# print(f"已清理[{cleared_text}],并保存到 {output_file}")
print("已完成:\n"+cleared_text+f"\n并保存到 {
output_file
}"
)
# 使用示例
input_excel_file = r'测试-脱敏结果.xlsx' # 输入Excel文件路径
output_excel_file = r'清除样式_测试-脱敏结果.xlsx' # 输出Excel文件路径
sheet_to_clean = 'PB' # 'Sheet1' # 要清理的工作表名称
print(f"初始化中..."
)
print(f"输入文件: {
input_excel_file
}"
)
print(f"输出文件: {
output_excel_file
}"
)
print(f"目标工作表: {
sheet_to_clean
}"
)
try:
clear_all_and_save(input_excel_file, output_excel_file, sheet_to_clean)
except Exception as e:
print(f"处理过程中发生错误: {
str(e)
}"
)

功能特性说明

1. 三重数据净化

2. 可视化进度提示

采用tqdm库实现:

3. 安全防护机制


典型应用场景

  1. 数据迁移前的格式标准化
  2. 第三方数据接入清洗
  3. 报表自动化生成预处理
  4. 敏感信息脱敏后处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/929151.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手把手教你用 Docker 部署 Redis

本文详细介绍从轩辕镜像拉取Redis镜像的多种方式(登录验证、免登录、官方直连等),提供快速部署、持久化部署(推荐)、docker-compose部署(企业级)三种方案,还包含结果验证方法及无法远程连接、设置密码等常见问…

悟空博弈单元(WBUC)与广域统一计算(WAUC)研究:价值共生的技术基石——声明Ai研究

悟空博弈单元(WBUC)与广域统一计算(WAUC)研究:价值共生的技术基石 一、研究背景与概述 人工智能技术的发展正经历从单纯的"知识存储"向"知行合一"的深刻范式转变 。在这一转型过程中,传统计算架…

如何快速推广自己的网站旧房装修找哪家

微信爱情指数计算器整蛊app是一款不错的爱情必备的计算器服务,让情侣们有一个很有意思的整蛊服务的App,喜欢的话快来下载吧。微信爱情指数计算器整蛊app介绍1、爱情指数计算器整蛊app是很有意思的一款爱情指数计算器软件2、操作起来也比较的简单&#xf…

掌握形式验证工具,提升芯片验证效率

在当今竞争激烈的 IC 设计行业,确保芯片功能正确且无误至关重要。形式验证工具凭借数学驱动的严谨验证方式,在超越传统仿真方法的同时,为复杂设计提供了更高信心与效率的验证路径。核心优势:为什么选择形式验证工具…

宁波专业网站制作服务济宁做网站建设的公司

来源: 人机与认知实验室摘要:有人机与无人机混合编队协同作战是未来空战的重要形式。有人机是中央指挥,而无人机直接接受有人机的指挥和控制,并进行战场态势感知、目标打击等。有人机和无人机可以看成空间上分离而逻辑上一体的巨型…

长租公寓的生存越来越难了 - 智慧园区

最近两年,受保租房大量入市以及业主直租比例回升影响,长租公寓客源被持续分流,运营压力与日俱增。 在此背景下,通过产品创新来破解获客难题,成为租赁行业发展的迫切需求。 长租公寓,亟需新一轮产品内卷。卷户型 …

天津营销网站建设公司哪家好重庆做网站建设公司排名

一早打开电脑发现代码关联失效了,目测可能跟昨天一些插件更新有关 结论 就这货,开了就没法提示代码关联,估计预览版全是BUG。 另一个坑 同期有个unity插件也是预览版,“非常好使”,当场去世。评论点开有好几个人说用…

Spring Boot中保存前端上传的图片 - 教程

Spring Boot中保存前端上传的图片 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "M…

完整教程:Go语言的context

完整教程:Go语言的context2025-10-06 09:10 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; …

国外做农产品有名的网站手机端网站设计模板

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

创意网站建设排行榜wordpress删除摘要

facenet是一款非常经典的神经网络模型,它可以直接学习从人脸图像到欧几里德空间的映射(直接将人脸映射到欧几里得空间)。在欧几里德空间中,距离直接对应于人脸相似性的度量。一旦这个空间产生,使用标准技术,将FaceNet嵌入作为特征…

Python包管理器 uv替代conda? - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

广州建站网络推广公司大气绿色网站模板

引言 随着软件复杂度的不断增加,如何有效地管理类内部的数据变得愈发重要。属性装饰器作为一种强大的工具,不仅简化了代码,还增强了程序的可读性和可维护性。通过使用属性装饰器,我们可以轻松地实现对类属性的读取、修改以及删除…

网站开发维护报价单wordpress的源代码

一.标识符1.标识符的作用:C 标识符是用来标识变量、函数,或任何其他用户自定义项目的名称2.标识符的规范:一个标识符只能以字母 A-Z 或 a-z 或下划线 _ 开始 后跟零个或多个字母、下划线和数字(0-9),第二位开始也只能用 A-Z…

P2724 [IOI 1998 / USACO3.1] 联系 Contact 做题笔记

前面思考了好久都没想出什么,看了题解才会,我真是太菜了 思路 本题可以暴力枚举解决,但是直接暴力枚举又会超时 怎么办呢,注意到这个序列中只有 \(0\) 和 \(1\),长得像二进制。直接把二进制强压成十进制就不用一位…

教育网站平面设计53建筑人才网

目录 问题描述: 解决方法: 重要代码: 问题描述: 项目中oracle数据库需要转换为mysql,Oracle中的表字段定义为number(36,16)类型的工具自动转换为mysql的decimal(36,16)。在Oracle数据库中,number(36,16)类型的字段,使用BigDeci…

如果能重来

如果能重来如果能重来 好多事,年轻的时候不去尝试,年纪大了就更不可能去尝试,尤其是一个人。年少多去经历,是一笔财富,更是“不负少年时”。2025.10.6

深入解析:DeepSeek 赋能智能零售,解锁动态定价新范式

深入解析:DeepSeek 赋能智能零售,解锁动态定价新范式2025-10-06 08:57 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; d…

家如何网站刷网站seo排名软件

(1)什么是多态? 同类型的对象,表现出不同的形态。前者指父类,后者指不同的子类 说简单点,就是父类的同一种方法,可以在不同子类中表现出不同的状态,或者说在不同子类中可以实现不同…

实用指南:pyecharts 画一下股票的月K图(输出html)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …