【python】【excel】用excel中指定单元格的内容去替换一个文本中指定的字符

news2024/10/7 19:21:19

1 使用背景

理正的.spw文件是文本格式,类似于该软件的前处理,相关参数字段可通过文本替换,快速修改参数。

后续用途可用在:用EXCEL整理数据,通过修改文本批量获取多个截面参数的spw文件

2 ExcelSheet-shift-textstring

2.1 Code

import os
import re
import chardet
import tkinter as tk
from tkinter import filedialog
from tkinter import messagebox
from openpyxl import load_workbook

def select_excel_file():
    excel_path = filedialog.askopenfilename(filetypes=[("Excel files", "*.xlsx")])
    entry_excel.delete(0, tk.END)
    entry_excel.insert(0, excel_path)

def select_text_file():
    text_path = filedialog.askopenfilename(filetypes=[("Text files", "*.txt")])
    entry_text.delete(0, tk.END)
    entry_text.insert(0, text_path)

def replace_string():
    excel_path = entry_excel.get()
    text_path = entry_text.get()
    cell = entry_cell.get()
    target_string = entry_target.get()

    if not (os.path.exists(excel_path) and os.path.exists(text_path) and cell.strip() and target_string.strip()):
        messagebox.showerror("Error", "Please select both files and enter the cell and target string.")
        return

    wb = load_workbook(excel_path)
    ws = wb.active
    replacement_string = ws[cell].value
    with open(text_path, "rb") as file:
        raw_data = file.read()
        detected_encoding = chardet.detect(raw_data)
        encoding = detected_encoding["encoding"]

    with open(text_path, "r", encoding=encoding) as file:
        content = file.read()

    content = re.sub(target_string, str(replacement_string), content)

    with open(text_path, "w", encoding="utf-8") as file:
        file.write(content)

    messagebox.showinfo("Success", "String replaced successfully.")

root = tk.Tk()
root.title("String Replacer")

frame = tk.Frame(root)
frame.pack(padx=10, pady=10)

label_excel = tk.Label(frame, text="Excel file:")
label_excel.grid(row=0, column=0, sticky="e")
entry_excel = tk.Entry(frame, width=40)
entry_excel.grid(row=0, column=1)
button_excel = tk.Button(frame, text="Browse", command=select_excel_file)
button_excel.grid(row=0, column=2)

label_text = tk.Label(frame, text="Text file:")
label_text.grid(row=1, column=0, sticky="e")
entry_text = tk.Entry(frame, width=40)
entry_text.grid(row=1, column=1)
button_text = tk.Button(frame, text="Browse", command=select_text_file)
button_text.grid(row=1, column=2)

label_cell = tk.Label(frame, text="Cell:")
label_cell.grid(row=2, column=0, sticky="e")
entry_cell = tk.Entry(frame, width=10)
entry_cell.grid(row=2, column=1, sticky="w")

label_target = tk.Label(frame, text="Target string:")
label_target.grid(row=3, column=0, sticky="e")
entry_target = tk.Entry(frame, width=40)
entry_target.grid(row=3, column=1)

button_replace = tk.Button(frame, text="Replace String", command=replace_string)
button_replace.grid(row=4, column=1, pady=10)

root.mainloop()

2.2 界面

image-20230608003628607

image-20230608003714049

image-20230608003735940

2.3 方法解析

  1. 导入所需的库和模块:
import os
import re
import chardet
import tkinter as tk
from tkinter import filedialog
from tkinter import messagebox
from openpyxl import load_workbook
  1. 定义函数 select_excel_file(),用于打开文件对话框,选择 Excel 文件,并将其路径显示在 Entry 控件中:
def select_excel_file():
    excel_path = filedialog.askopenfilename(filetypes=[("Excel files", "*.xlsx")])
    entry_excel.delete(0, tk.END)
    entry_excel.insert(0, excel_path)
  1. 定义函数 select_text_file(),用于打开文件对话框,选择文本文件,并将其路径显示在 Entry 控件中:
def select_text_file():
    text_path = filedialog.askopenfilename(filetypes=[("Text files", "*.txt")])
    entry_text.delete(0, tk.END)
    entry_text.insert(0, text_path)
  1. 定义函数 replace_string(),用于从 Excel 文件中的指定单元格读取数据,并在文本文件中替换目标字符串:
def replace_string():
    # 获取用户输入的文件路径、单元格和目标字符串
    excel_path = entry_excel.get()
    text_path = entry_text.get()
    cell = entry_cell.get()
    target_string = entry_target.get()

    # 检查输入是否有效
    if not (os.path.exists(excel_path) and os.path.exists(text_path) and cell.strip() and target_string.strip()):
        messagebox.showerror("Error", "Please select both files and enter the cell and target string.")
        return

    # 读取 Excel 文件中的替换字符串
    wb = load_workbook(excel_path)
    ws = wb.active
    replacement_string = ws[cell].value

    # 使用 chardet 检测文本文件的编码,并读取文件内容
    with open(text_path, "rb") as file:
        raw_data = file.read()
        detected_encoding = chardet.detect(raw_data)
        encoding = detected_encoding["encoding"]

    with open(text_path, "r", encoding=encoding) as file:
        content = file.read()

    # 替换目标字符串
    content = re.sub(target_string, str(replacement_string), content)

    # 将替换后的内容写回文本文件
    with open(text_path, "w", encoding="utf-8") as file:
        file.write(content)

    # 显示操作成功的消息框
    messagebox.showinfo("Success", "String replaced successfully.")
  1. 设置 Tkinter GUI 应用程序的基本结构:
root = tk.Tk()
root.title("String Replacer")

frame = tk.Frame(root)
frame.pack(padx=10, pady=10)

# 3 创建用于选择文件和输入单元格、目标字符串的标签、输入框和按钮
# 4 对应的 grid 函数设置它们在界面中的位置
# 5 ...
  1. 创建 “Replace String” 按钮,绑定 replace_string() 函数,并设置按钮在界面中的位置:
button_replace = tk.Button(frame, text="Replace String", command=replace_string)
button_replace.grid(row=4, column=1, pady=10)
  1. 启动 Tkinter GUI 应用程序的主循环:
root.mainloop()

整个程序的功能是通过一个简单的 GUI 界面,让用户选择一个 Excel 文件和一个文本文件,输入一个单元格引用和一个目标字符串。然后,程序从 Excel 文件中读取单元格中的数据,将文本文件中的目标字符串替换为该数据,并将结果保存回文本文件。

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

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

相关文章

macOS中解决matplotlib中文乱码

现象 图表上中文变方框,日志中报错如下: findfont: Generic family sans-serif not found because none of the following families were found: 解决办法 下载字体 http://xiazaiziti.com/210356.html 查询字体保存路径 查看配置文件路径 import…

01- 数据类型(C语言)

一 变量和常量 1.1 标识符 1、在我们所写的“第一个C程序”中出现了很多的标识符,例如include、main、printf、return。标识符是⽤来标识变量、函数,或任何其他⽤户⾃定义项⽬的名称。 2、标识符的约束规范: 只能包含数字、字母和下划线不…

chatgpt赋能python:Python怎么删除列表

Python怎么删除列表 什么是Python列表? 在Python中,列表是一个可变的序列,它可以包含不同类型的数据。列表可以使用中括号 [] 来定义,每个元素之间用逗号分隔。列表中的元素可以通过其下标进行访问,下标从0开始。 P…

Skywalking基础使用

Skywalking基础使用 agent的使用Linux下Tomcat7和8中使用Spring Boot中使用RocketBot的使用 agent的使用 agent探针可以让我们不修改代码的情况下,对java应用上使用到的组件进行动态监控,获取运行数据发送到OAP上进行统计和存储。agent探针在java中是使…

C语言之数组初级(5-8)

目录 1. 一维数组的创建和初始化 2. 一维数组的使用 3. 一维数组在内存中的存储 4. 二维数组的创建和初始化 5. 二维数组的使用 6. 二维数组在内存中的存储 7. 数组越界 8. 数组作为函数参数 二维数组的画图讲解 例如现在我要找第二行第三列这个元素,下面是…

放大电路与频率特征(期末模电速成)

目录 1、放大电路基础 2、放大电路三种组态 3、放大电路分析(必考) 4、多级放大电路 5、差动放大电路 6、频率特征 1、放大电路基础 晶体管输出特性曲线中的线性区域是指 放大区 ,iC βiB NPN 型静态工作点过高,容易产生 饱…

Vue 中的表格操作

Vue 中的表格操作 在 Web 开发中,表格是非常常见的元素之一。在 Vue 中,我们可以使用一些组件和插件来实现表格的操作。在本文中,我们将介绍 Vue 中的表格操作的基本原理和用法,并给出一些实例代码来帮助读者更好地理解。 表格…

Scrapy爬取数据,使用Django+PyEcharts实现可视化大屏

项目介绍 使用Scrapy进行数据爬取,MySQL存储数据,Django写后端服务,PyEcharts制作可视化图表,效果如下。 项目下载地址:Scrapy爬取数据,并使用Django框架PyEcharts实现可视化大屏 发现每个模块都有详情页…

Django---------创建、运行

目录 1.安装django 2.pycharm(专业版)创建项目 3.默认项目的文件介绍 4.App的创建和说明 5. 启动运行django 1.确保app已注册[settings.py] 2. 编写URL和视图函数对应关系[url.py] 3.编写视图函数[views.py] 4.启动django项目 1.安装django pip…

C语言之函数栈帧的创建与销毁讲解(1)

在前期的学习中我们可能有很多困惑 例如:局部变量是怎么创建的 为什么局部变量的值是随机值 函数是怎么样传参的 传参的顺序是什么 形参和实参的关系是什么 函数调用是怎么做的 函数掉调用结束后怎么返回的 这篇博客我们来修炼自己的内功,掌握好这篇…

MySQL数据库,从入门到精通:第四篇——MySQL中常用的运算符及其用法

MySQl学习(MySQL数据库,从入门到精通:第四篇——MySQL中常用的运算符及其用法 第四篇_MySQL中常用的运算符及其用法运算符1. 算术运算符1.加法与减法运算符2.乘法与除法运算符3.求模(求余&#…

【Linux】在工作站或服务器上实现多个GUI图形界面同时进行操作,多个用户同时操作互不干扰

一、问题背景 因为我们团队有几个人需要做仿真,一个工作站不够用,经常是一个人操作的时候另一个人就眼巴巴等着。 我在想能不能实现一种方案,能使两个人一起操作仿真软件呢? 这种方案,目前网上比较流行是x11-forwar…

NLP——ELMO;BERT;Transformers

文章目录 ELMOELMO 简介ELMO 优点利用了多层的 hidden 表示ELMO 缺点 BERTBERT V.S. ELMO两种预训练任务Object1: Masked Language ModelObject2: Next sentence prediction 训练细节如何使用 BERTBERT 应用——垃圾邮件分类 Transformerself-attentionMulti-head AttentionTra…

chatgpt赋能python:Python中如何判断奇偶数

Python中如何判断奇偶数 当我们在Python中编写程序时,有时需要判断一个数是奇数还是偶数,因为根据不同的情况,我们需要对不同的数值进行不同的处理。那么在Python中,该如何判断一个数是奇数还是偶数呢? 判断奇偶数的…

【JavaEE进阶】mybatis

目录: 一、Mybatis是什么 三个映射关系如下图: 二、mybatis的使用(前置工作简单案例) 第一步:导入MAVEN依赖 第二步: 在spring项目当中新建数据源 第三步:新建一个实体类,是和…

Shell编程规范与变量使用

目录 一、Shell编程概述 1.Shell脚本的概念 2.Shell脚本的应用场景 3.Shell的作用 4.Linux系统中支持的shell 二、Shell编程规范 1.编写Shell脚本规范步骤 2.Shell脚本执行方法 (1)以绝对路径执行(需要赋予脚本文件执行权限&#xf…

stable diffusion webui 文生图(txt2img)api接口调用(使用C#)

唠嗑 本次将跟读者讲一下如何通过C#请求sd webui api 【txt2img】接口,如果读者觉得文章有用,请给【点个赞】吧,有问题可以评论区提问。 实战 1.配置api启用参数 启动webui时,需加上【–api】 命令以保证api接口可以被调用。如…

Shell脚本文本三剑客之awk编辑器

目录 一、sed编辑器简介 二、sed工作流程 三、sed命令 四、sed命令的使用 1.sed打印文件内容(p) (1)打印文件所有行 (2)打印文件指定行 2.sed增加、插入、替换行(a、i、c) …

Shell脚本之正则表达式详解

目录 一、正则表达式简介 二、正则表达式的组成 三、正则表达式分类 四、正则表达式字符用法 1.基础正则表达式常见元字符(支持grep、egrep、sed、awk) 2. 扩展正则表达式元字符(支持:egrep、grep -E、awk、sed -r&#xff…

C语言之数据在内存中的存储(2)

本章重点:浮点数在内存中的存储 浮点数:数学中的小数 eg.123.45 12.345*10^1 1.2345*10^2 1E10:1.0*10^10 整型家族的类型,表示范围:limits.h 浮点数:float.h 大家可以猜测一下打印的这四个数字…