当前位置: 首页 > news >正文

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

摘要

本文将分享一款基于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.jsqmd.com/news/9014/

相关文章:

  • 手把手教你用 Docker 部署 Redis
  • 悟空博弈单元(WBUC)与广域统一计算(WAUC)研究:价值共生的技术基石——声明Ai研究
  • 掌握形式验证工具,提升芯片验证效率
  • 长租公寓的生存越来越难了 - 智慧园区
  • Spring Boot中保存前端上传的图片 - 教程
  • 完整教程:Go语言的context
  • Python包管理器 uv替代conda? - 详解
  • P2724 [IOI 1998 / USACO3.1] 联系 Contact 做题笔记
  • 如果能重来
  • 深入解析:DeepSeek 赋能智能零售,解锁动态定价新范式
  • 实用指南:pyecharts 画一下股票的月K图(输出html)
  • 深入解析:Linux运维笔记:服务器感染 netools 病毒案例
  • Linux--进程概念 - 详解
  • 设计模式——命令设计模式(行为型) - 详解
  • 设计模式——访问者设计模式(行为型) - 实践
  • 港专专利申请量被反超,背后是谁在“偷家”?
  • 版权诉讼下的MiniMax:AI独角兽的上市迷途
  • Unity UI 性能优化终极指南 — Image篇 - 教程
  • HTB Eureka靶机渗透实战 - Spring Boot堆转储与Bash算术注入漏洞利用
  • 实用指南:Matlab实现LSTM-SVM回归预测,作者:机器学习之心
  • 手机照片太多了存哪里? - 实践
  • 时隔十六年的南京之旅
  • 实用指南:Python编程基础(四) | if语句
  • 高贵的北上广深,没有父母托举,90后很难成家
  • 使用AI图像服务规模化视觉内容生产
  • 本地Markdown开源知识库选型指南 - 详解
  • 实用指南:基于贝叶斯优化神经网络的光伏功率预测综述
  • 详细介绍:ROS2与Unitree机器人集成指南
  • plexe 通过提示词构建机器学习模型
  • 如何用docker部署ELK? - 教程