import tkinter as tk
from tkinter import filedialog, messagebox, ttk
import logging
import os
from openpyxl import load_workbook
import some_opera
import time # 模拟耗时任务
import replace_content
from save_to_json import UserDataManager
from docx import Document
folder_path1 = './log'
folder_path2 = './output'
if os.path.exists(folder_path1) and os.path.exists(folder_path2):
pass
else:
os.makedirs(folder_path1)
os.makedirs(folder_path2)
# 配置日志记录
logging.basicConfig(filename='./log/main.log', level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s', encoding="utf-8")
logger = logging.getLogger()
class WordExcelReplacerApp:
def __init__(self, root):
self.root = root
self.root.title("Word-Excel 替换工具")
self.word_path = ""
self.excel_path = ""
self.replacements = []
self.results = []
self.index_i = 0
# GUI布局
self.create_widgets()
self.user_data = UserDataManager()
def create_widgets(self):
tk.Label(self.root, text="选择Word文件:").grid(row=0, column=0, padx=10, pady=5)
self.word_entry = tk.Entry(self.root, width=50)
self.word_entry.grid(row=0, column=1, padx=10, pady=5)
self.word_button = tk.Button(self.root, text="浏览...", command=self.load_word_file)
self.word_button.grid(row=0, column=2, padx=10, pady=5)
tk.Label(self.root, text="选择Excel文件:").grid(row=1, column=0, padx=10, pady=5)
self.excel_entry = tk.Entry(self.root, width=50)
self.excel_entry.grid(row=1, column=1, padx=10, pady=5)
self.excel_button = tk.Button(self.root, text="浏览...", command=self.load_excel_file)
self.excel_button.grid(row=1, column=2, padx=10, pady=5)
# 替换数量选择
tk.Label(self.root, text="需要替换的数量:").grid(row=2, column=0, padx=10, pady=5)
self.replace_count_var = tk.IntVar(value=5)
self.replace_count_spinbox = tk.Spinbox(self.root, from_=1, to=15, textvariable=self.replace_count_var,
command=self.update_replacement_inputs)
self.replace_count_spinbox.grid(row=2, column=1, padx=10, pady=5)
# 创建一个可滚动的框架用于替换内容输入框
self.canvas = tk.Canvas(self.root, height=200,width=1150)
self.inputs_frame = tk.Frame(self.canvas)
self.scrollbar = tk.Scrollbar(self.root, orient="vertical", command=self.canvas.yview)
self.canvas.configure(yscrollcommand=self.scrollbar.set)
self.scrollbar.grid(row=3, column=3, sticky="ns")
self.canvas.grid(row=3, column=0, columnspan=3, pady=10)
self.canvas.create_window((0, 0), window=self.inputs_frame, anchor="nw")
self.inputs_frame.bind("<Configure>", self.on_frame_configure)
# 创建初始的替换内容输入框
self.update_replacement_inputs()
# 输出框
self.output_frame = tk.Frame(self.root)
self.output_frame.grid(row=4, column=0, columnspan=4, pady=10, sticky="w")
self.out_put = tk.Text(self.output_frame, height=10, width=80,font=("Arial", 12))
self.out_put.grid(row=0, column=0, padx=10, pady=10, sticky="w")
# 执行替换和退出按钮
self.buttons_frame = tk.Frame(self.root)
self.buttons_frame.grid(row=4, column=2, padx=10, pady=10, sticky="n")
self.replace_button = tk.Button(self.buttons_frame, text="执行替换", command=self.replace_text)
self.replace_button.grid(row=0, column=0, pady=5)
self.quit_button = tk.Button(self.buttons_frame, text="退出代码", command=self.root.quit)
self.quit_button.grid(row=1, column=0, pady=5)
self.windows_output("欢迎使用提取excel内容到word工具")
self.windows_output("str:普通填入替换内容")
self.windows_output("random_init:\n\t替换内容为:随机生成几个整数,以逗号隔开:如:1,5,3。示例-->2,5,4")
self.windows_output("random_float:\n\t替换内容为:随机生成几个小数,以逗号隔开,可填入4个数,最后一个数为小数位数默认为2为小数,最后的2可省略:\t如生成3个0.1到1.2之间的随机数,保留2位小数:0.1,1.2,3,2。示例-->0.21,0.55,0.65")
self.windows_output("sheet_key:\n\t替换内容为:输入需要填入excel数据所在的列,如:B")
self.windows_output("sheet_key_operate:\n\t替换内容为:将excel数据中的几列进行拼接:如A-F.输出的:拼接的数据以,隔开,")
logger.info("欢迎使用excel内容提取到word工具")
def on_frame_configure(self, event):
self.canvas.configure(scrollregion=self.canvas.bbox("all"))
# 定义一个函数,用于添加学生信息到JSON文件中
def update_replacement_inputs(self):
# 删除现有的所有子部件
for widget in self.inputs_frame.winfo_children():
widget.destroy()
# 创建新的替换内容输入框
self.create_replacement_inputs(self.replace_count_var.get())
def create_replacement_inputs(self, count):
self.replacements = []
for i in range(count):
frame = tk.Frame(self.inputs_frame)
frame.grid(row=i, column=0, pady=5)
tk.Label(frame, text=f"替换内容{i + 1}:").grid(row=0, column=0, padx=5)
is_table_content_var = tk.BooleanVar(value=1)
tk.Checkbutton(frame, text="是否为表格内容", variable=is_table_content_var).grid(row=0, column=1, padx=5)
original_text_var = tk.StringVar()
tk.Entry(frame, textvariable=original_text_var, width=20).grid(row=0, column=2, padx=5)
tk.Label(frame, text="表格号:").grid(row=0, column=3, padx=5)
table_var = tk.IntVar()
tk.Entry(frame, textvariable=table_var, width=5).grid(row=0, column=4, padx=5)
tk.Label(frame, text="行号:").grid(row=0, column=5, padx=5)
row_var = tk.IntVar()
tk.Entry(frame, textvariable=row_var, width=5).grid(row=0, column=6, padx=5)
tk.Label(frame, text="列号:").grid(row=0, column=7, padx=5)
col_var = tk.IntVar()
tk.Entry(frame, textvariable=col_var, width=5).grid(row=0, column=8, padx=5)
tk.Label(frame, text="请选择一个选项:").grid(row=0, column=9, padx=5)
options = ["str", "random_int", "random_float", "sheet_key", "sheet_key_operate"]
combo = ttk.Combobox(frame, values=options)
combo.grid(row=0, column=10, padx=5)
combo.current(0)
tk.Label(frame, text="替换内容:").grid(row=0, column=11, padx=5)
replacement_text_var = tk.StringVar()
tk.Entry(frame, textvariable=replacement_text_var, width=20).grid(row=0, column=12, padx=5)
self.replacements.append({
'is_table_content_var': is_table_content_var, # 是否为表格内容
'original_text_var': original_text_var, # 原始文本
'table_var': table_var, # 表格号
'row_var': row_var, # 行号
'col_var': col_var, # 列号
'combo': combo, # 选项
'replacement_text_var': replacement_text_var # 替换文本
})
def load_word_file(self):
self.word_path = filedialog.askopenfilename(filetypes=[("Word文件", "*.docx")])
self.word_entry.delete(0, tk.END)
self.word_entry.insert(0, self.word_path)
def load_excel_file(self):
self.excel_path = filedialog.askopenfilename(filetypes=[("Excel文件", "*.xlsx")])
self.excel_entry.delete(0, tk.END)
没有合适的资源?快使用搜索试试~ 我知道了~
tkinter 制作一个从 excel 提取内容到 word 中的进行替换的工具
共7个文件
py:5个
jpg:1个
exe:1个
需积分: 2 0 下载量 77 浏览量
2024-08-06
22:24:45
上传
评论
收藏 14.09MB ZIP 举报
温馨提示
该程序通过自动化方式,实现了Word文档中内容的灵活替换(包括指定字符串、随机整数/小数、Excel中的值及拼接值),并支持根据Excel数据批量生成个性化Word文档,提高了文档处理的效率和准确性。 类似word中的邮件功能:通过查找替换,替换原有word中的内容: 同时,批量生成内容:如使用excel中的一列作为word新文件的文件名 具体如下:::: **替换为指定str word中的查找替换 替换为随机生成的整数 替换为随机的小数 替换为excel中的值 替换为excel中拼接的值** 关注公众号:右恩 可以一起来沟通
资源推荐
资源详情
资源评论
收起资源包目录
Word文档中内容的灵活替换.zip (7个子文件)
save_to_json.py 2KB
main.py 337B
some_opera.py 2KB
关注公众号_右恩.jpg 27KB
main.exe 14.32MB
replace_content.py 2KB
generate_windows.py 17KB
共 7 条
- 1
资源评论
右恩
- 粉丝: 381
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Python SOAP 客户端.zip
- Python ODBC 桥.zip
- Python MIDI 库.zip
- Python for DevOps repo 包含有用的 Python 脚本,可供您学习并在日常 DevOps 自动化任务中实施 .zip
- Python API 包装器和库列表.zip
- Python - 与我的 YouTube 频道相关的脚本存储在这里,可以用任何版本的 Python 编写.zip
- PyClass 课程计划.zip
- Puppet 模块用于安装和管理 Python、pip、virtualenvs 和 Gunicorn 虚拟主机 .zip
- jieshao123456
- Java 将本地mp4推流rtsp
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功