Python实战:Excel中文转拼音工具开发教程

ops/2025/2/22 19:31:42/

在日常办公中,我们经常需要处理Excel文件,有时候需要将中文转换为拼音缩写以方便检索和使用。今天我将分享一个使用Python开发的小工具,它可以自动将Excel文件中指定列的中文转换为拼音缩写
C:\pythoncode\new\ConvertExcelcontentToPinyin.py

开发环境准备

首先,我们需要安装以下Python库:

pip install wxPython    # 用于创建图形界面
pip install openpyxl    # 用于处理Excel文件
pip install pypinyin    # 用于中文转拼音

核心功能设计

我们的工具主要实现以下功能:

  1. 图形界面选择Excel文件
  2. 自动定位"项目名称"和"部门"列
  3. 中文转换为拼音大写缩写
  4. 生成新的Excel文件
  5. 显示处理结果

代码实现

全部代码

python">import wx
import openpyxl
from pypinyin import pinyin, Style
import osclass MainFrame(wx.Frame):def __init__(self):super().__init__(parent=None, title='Excel中文转拼音缩写工具', size=(500, 300))self.init_ui()def init_ui(self):panel = wx.Panel(self)vbox = wx.BoxSizer(wx.VERTICAL)# 创建文件选择按钮select_btn = wx.Button(panel, label='选择Excel文件')select_btn.Bind(wx.EVT_BUTTON, self.on_select)vbox.Add(select_btn, 0, wx.ALL | wx.CENTER, 20)# 创建状态显示文本框self.status_text = wx.TextCtrl(panel, style=wx.TE_MULTILINE | wx.TE_READONLY)vbox.Add(self.status_text, 1, wx.ALL | wx.EXPAND, 20)panel.SetSizer(vbox)self.Centre()def on_select(self, event):with wx.FileDialog(self, "选择Excel文件", wildcard="Excel files (*.xlsx)|*.xlsx",style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) as fileDialog:if fileDialog.ShowModal() == wx.ID_CANCEL:returnpathname = fileDialog.GetPath()try:self.process_excel(pathname)except Exception as e:wx.MessageBox(f'处理文件时发生错误:{str(e)}', '错误',wx.OK | wx.ICON_ERROR)def get_pinyin_abbr(self, chinese_str):"""获取中文的拼音缩写"""if not chinese_str or not isinstance(chinese_str, str):return chinese_str# 获取每个字的拼音首字母abbr = ''for p in pinyin(chinese_str, style=Style.FIRST_LETTER):abbr += p[0].upper()return abbrdef process_excel(self, filepath):"""处理Excel文件"""self.status_text.SetValue("开始处理文件...\n")# 加载工作簿wb = openpyxl.load_workbook(filepath)ws = wb.active# 查找目标列的索引project_col = Nonedept_col = Nonefor col in range(1, ws.max_column + 1):cell_value = ws.cell(row=2, column=col).value  # 假设第2行是标题行if cell_value == "项目名称":project_col = colelif cell_value == "部门":dept_col = colif not project_col or not dept_col:raise ValueError("未找到'项目名称'或'部门'列")# 转换内容changes = []for row in range(3, ws.max_row + 1):  # 从第3行开始处理# 处理项目名称project_cell = ws.cell(row=row, column=project_col)if project_cell.value:original_project = project_cell.valueproject_cell.value = self.get_pinyin_abbr(original_project)changes.append(f"行 {row}: 项目名称 '{original_project}' -> '{project_cell.value}'")# 处理部门dept_cell = ws.cell(row=row, column=dept_col)if dept_cell.value:original_dept = dept_cell.valuedept_cell.value = self.get_pinyin_abbr(original_dept)changes.append(f"行 {row}: 部门 '{original_dept}' -> '{dept_cell.value}'")# 生成新文件名file_dir = os.path.dirname(filepath)file_name = os.path.basename(filepath)new_file_name = f"pinyin_{file_name}"new_filepath = os.path.join(file_dir, new_file_name)# 保存新文件wb.save(new_filepath)# 更新状态status_msg = "\n".join(changes)self.status_text.AppendText(f"\n转换完成!更改详情:\n{status_msg}\n\n新文件已保存为:{new_filepath}")def main():app = wx.App()frame = MainFrame()frame.Show()app.MainLoop()if __name__ == '__main__':main()

1. 创建图形界面

首先,我们使用wxPython创建一个简单的图形界面:

python">class MainFrame(wx.Frame):def __init__(self):super().__init__(parent=None, title='Excel中文转拼音缩写工具', size=(500, 300))self.init_ui()def init_ui(self):panel = wx.Panel(self)vbox = wx.BoxSizer(wx.VERTICAL)# 创建文件选择按钮select_btn = wx.Button(panel, label='选择Excel文件')select_btn.Bind(wx.EVT_BUTTON, self.on_select)vbox.Add(select_btn, 0, wx.ALL | wx.CENTER, 20)# 创建状态显示文本框self.status_text = wx.TextCtrl(panel, style=wx.TE_MULTILINE | wx.TE_READONLY)vbox.Add(self.status_text, 1, wx.ALL | wx.EXPAND, 20)panel.SetSizer(vbox)self.Centre()

2. 实现文件选择功能

添加文件选择对话框和错误处理:

python">def on_select(self, event):with wx.FileDialog(self, "选择Excel文件", wildcard="Excel files (*.xlsx)|*.xlsx",style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) as fileDialog:if fileDialog.ShowModal() == wx.ID_CANCEL:returnpathname = fileDialog.GetPath()try:self.process_excel(pathname)except Exception as e:wx.MessageBox(f'处理文件时发生错误:{str(e)}', '错误',wx.OK | wx.ICON_ERROR)

3. 中文转拼音功能

使用pypinyin库实现中文转拼音缩写

python">def get_pinyin_abbr(self, chinese_str):"""获取中文的拼音缩写"""if not chinese_str or not isinstance(chinese_str, str):return chinese_str# 获取每个字的拼音首字母abbr = ''for p in pinyin(chinese_str, style=Style.FIRST_LETTER):abbr += p[0].upper()return abbr

4. Excel处理核心功能

实现Excel文件的读取、处理和保存:

python">def process_excel(self, filepath):"""处理Excel文件"""self.status_text.SetValue("开始处理文件...\n")# 加载工作簿wb = openpyxl.load_workbook(filepath)ws = wb.active# 查找目标列的索引project_col = Nonedept_col = Nonefor col in range(1, ws.max_column + 1):cell_value = ws.cell(row=2, column=col).valueif cell_value == "项目名称":project_col = colelif cell_value == "部门":dept_col = col# 转换内容并保存# ... (详细代码见完整实现)

技术要点解析

  1. wxPython使用技巧

    • 使用BoxSizer进行界面布局
    • 添加文件选择对话框
    • 实现事件绑定
  2. Excel处理技巧

    • 使用openpyxl读写Excel文件
    • 动态查找目标列
    • 保持原始格式不变
  3. 中文转拼音处理

    • 使用pypinyin库处理中文
    • 提取拼音首字母
    • 处理异常情况

使用效果

  1. 运行程序后显示简洁的操作界面
  2. 点击按钮选择Excel文件
  3. 自动处理并生成新文件
  4. 界面实时显示处理进度和结果

实际应用案例

比如有以下数据:

  • 项目名称:智能消防工程
  • 部门:消防支队

转换后变为:

  • 项目名称:ZNXFGC
  • 部门:XFZD

注意事项

  1. 确保Excel文件格式正确
  2. 表格第2行必须是标题行
  3. 从第3行开始处理数据
  4. 原文件不会被修改

未来优化方向

  1. 添加自定义列选择功能
  2. 支持更多Excel格式
  3. 添加批量处理功能
  4. 优化转换规则

运行结果

在这里插入图片描述


http://www.ppmy.cn/ops/160583.html

相关文章

AB-02 AUTOSAR builder创建工程

AUTOSAR builder创建工程 1. 创建工程2. 创建 ARXML1. 创建工程 在AUTOSAR builder中,通过FileNewAUTOSAR Project,创建一个空的AUTOSAR Project,如下图所示: 通过拖拽的方式,将需要配置EB Tresos工程中的arxml文件加载到AUTOSAR builder工程中,如下图: 或者通过File…

Python网络爬虫技术详解文档

Python网络爬虫技术详解文档 目录 网络爬虫概述爬虫核心技术解析常用Python爬虫库实战案例演示反爬虫机制与应对策略爬虫法律与道德规范高级爬虫技术资源推荐与学习路径1. 网络爬虫概述 1.1 什么是网络爬虫 网络爬虫(Web Crawler)是一种按特定规则自动抓取互联网信息的程序…

乐观锁与悲观锁:概念、实现与应用场景

文章目录 乐观锁与悲观锁:概念、实现与应用场景引言 1. 悲观锁(Pessimistic Locking)1.1 定义1.2 特点1.3 实现方式1.4 适用场景 2. 乐观锁(Optimistic Locking)2.1 定义2.2 特点2.3 实现方式2.4 适用场景 3. 乐观锁与…

简识Spring创建Bean方式和设计模式

一、理论解释&#xff1a; Spring在创建Bean时主要有四种方式&#xff0c;这些方式分别涉及到了不同的设计模式。以下是具体的创建方式及对应的设计模式&#xff1a; 通过反射调用构造方法创建Bean&#xff1a; 方式&#xff1a;在Spring的配置文件中&#xff0c;使用<bean…

深入理解WebSocket接口:如何使用C++实现行情接口

在现代网络应用中&#xff0c;实时数据传输变得越来越重要。通过WebSocket&#xff0c;我们可以建立一个持久连接&#xff0c;让服务器和客户端之间进行双向通信。这种技术不仅可以提供更快的响应速度&#xff0c;还可以减少不必要的网络流量。本文将详细介绍如何使用C来实现We…

中文Build a Large Language Model (From Scratch) 免费获取全文

中文pdf下载地址&#xff1a;https://pan.baidu.com/s/1aq2aBcWt9vYagT2-HuxdWA?pwdlshj 提取码&#xff1a;lshj 原文、代码、视频项目地址&#xff1a;https://github.com/rasbt/LLMs-from-scratch 翻译工具&#xff1a;沉浸式翻译&#xff08;https://app.immersivetrans…

DeepSeek、Kimi、文心一言、通义千问:AI 大语言模型的对比分析

在人工智能领域&#xff0c;DeepSeek、Kimi、文心一言和通义千问作为国内领先的 AI 大语言模型&#xff0c;各自展现出了独特的特点和优势。本文将从技术基础、应用场景、用户体验和价格与性价比等方面对这四个模型进行对比分析&#xff0c;帮助您更好地了解它们的特点和优势。…

量子计算的威胁,以及企业可以采取的措施

当谷歌、IBM、Honeywell和微软等科技巨头纷纷投身量子计算领域时&#xff0c;一场技术军备竞赛已然拉开帷幕。 量子计算虽能为全球数字经济带来巨大价值&#xff0c;但也有可能对相互关联的系统、设备和数据造成损害。这一潜在影响在全球网络安全领域引起了强烈关注。也正因如…