首页 > 解决方案 > 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

请帮我检测错误并修复我的代码!

标签: pythonexceldatabaseuser-interfacetkinter

解决方案


推荐阅读