python - Python GUI使用(导入)excel文件中的数据替换word文档中的一些内容
问题描述
我正在尝试创建一个 python GUI。它的概念是导入两个文件:一个word文档(稍后将编辑的那个)和一个excel文件。
首先导入一个 excel 文件,这里是它的内容示例:
[excel数据库][1]
[1]: https://i.stack.imgur.com/LtypN.png
其次导入word文档(.docx)并分析其内容并检测其中位于表格中的任何“Pllexxx”(xxx是整数),这里是一个例子:
[word文档内容][2]
[2]: https://i.stack.imgur.com/R9Cze.png
第三,用 REQyyy 替换表格中的任何 Pllexxx 并下载新的 word 文档文件。
这是一个例子:Plle112 将被 REQ5592 使用来自 excel 的数据库替换
这是我的代码不起作用,我不明白错误在哪里:
import pandas as pd
from tkinter import *
from tkinter import filedialog
from tkinter import messagebox as msg
from pandastable import Table
from tkintertable import TableCanvas
from docx import Document
root = Tk()
message_label = Label(root,
text='my name',
font=('Arial', 19, 'underline'),
fg='Green')
message_label2 = Label(
text='Modify word file',
font=('Arial', 14, 'underline'),
fg='Red')
select_button = Button(root,
text='Select',
font=('Arial', 14),
bg='Orange',
fg='Black',
command=lambda: select_excel_file())
convert_button = Button(root,
text='Convert',
font=('Arial', 14),
bg='Orange',
fg='Black',
command=lambda: convert_word())
exit_button = Button(root,
text='Exit',
font=('Arial', 14),
bg='Red',
fg='Black',
command=root.destroy)
message_label.grid(row=1, column=1)
message_label2.grid(row=2, column=1)
select_button.grid(row=3, column=0,
padx=0, pady=15)
convert_button.grid(row=3, column=1,
padx=0, pady=15)
exit_button.grid(row=3, column=2,
padx=10, pady=15)
def select_excel_file():
file_name = filedialog.askopenfilename(initialdir='/Desktop',
title='Select a excel file',
filetypes=(('excel file', '*.xls')
, ('excel file', '*.xlsx'),
('excel file', '*.xls')))
my_dic = pd.read_excel(file_name, index_col=0).to_dict()
def convert_word():
file1_name = filedialog.askopenfilename(initialdir='/Desktop',
title='Select a word file',
filetypes=(('docx file', '*.docx'),
('docx file', '*.docx')))
document = Document(file1_name)
for table in document.tables:
for cell in table.cells:
for paragraph in cell.paragraphs:
if 'Plle' in paragraph.text:
m = ''
for j in paragraph.text:
if j.isdigit():
m += str(j)
paragraph.text = 'REQ' + str(my_dic['REQ'][int(m)])
document.save('new word file.docx')
root.title('modification of word files')
root.geometry('800x600')
root.mainloop()
这是输出的一个例子(我正在寻求的变化):
[在此处输入图片描述][3]
[3]: https://i.stack.imgur.com/iCSpz.png
请帮我检测错误并修复我的代码!
解决方案
推荐阅读
- c# - 演员词典
到字典 - imagemagick - 调整平铺图像的大小
- python - 一个简单的 jQuery on click 函数来删除一个属性
- qt - 如何构建和使用 QtDataVisualization::DeclarativeSurface?
- javascript - Javascript中指数数的余数
- reactjs - Next.js Router.push() 自动重新加载页面
- javascript - 仅当一个 Redis 事务中的列表为空时如何推送?
- c# - 为什么 IndexOf Soft hyphen 返回 0 作为字符串?
- windows - Windows SDK 10 安装程序无法运行
- javascript - 为什么 document.execCommand 在 reactjs 中不起作用?