Пример #1
0
    def test_pages(self):
        document = MailMerge(
            path.join(path.dirname(__file__), 'test_merge_pages.docx'))
        self.assertEqual(document.get_merge_fields(), {'fieldname'})

        document.merge_pages([
            {
                'fieldname': "xyz"
            },
            {
                'fieldname': "abc"
            },
            {
                'fieldname': "2b v ~2b"
            },
        ])

        with tempfile.TemporaryFile() as outfile:
            document.write(outfile)

        expected_tree = etree.fromstring(
            '<w:document xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:ns1="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" mc:Ignorable="w14 wp14"><w:body><w:p w:rsidP="007B2B98" w:rsidR="00EC3BBB" w:rsidRDefault="00651722" w:rsidRPr="00651722"><w:r><w:t xml:space="preserve">This is a template for the </w:t></w:r><w:r><w:t>xyz</w:t></w:r><w:r><w:t xml:space="preserve"> merge_list test case</w:t></w:r><w:bookmarkStart w:id="0" w:name="_GoBack" /><w:bookmarkEnd w:id="0" /></w:p><w:sectPr w:rsidR="00EC3BBB" w:rsidRPr="00651722"><w:headerReference ns1:id="rId7" w:type="default" /><w:footerReference ns1:id="rId8" w:type="default" /><w:pgSz w:h="15840" w:w="12240" /><w:pgMar w:bottom="1440" w:footer="708" w:gutter="0" w:header="708" w:left="1440" w:right="1440" w:top="1440" /><w:cols w:space="708" /><w:docGrid w:linePitch="360" /></w:sectPr></w:body><w:br w:type="page" /><w:body><w:p w:rsidP="007B2B98" w:rsidR="00EC3BBB" w:rsidRDefault="00651722" w:rsidRPr="00651722"><w:r><w:t xml:space="preserve">This is a template for the </w:t></w:r><w:r><w:t>abc</w:t></w:r><w:r><w:t xml:space="preserve"> merge_list test case</w:t></w:r><w:bookmarkStart w:id="0" w:name="_GoBack" /><w:bookmarkEnd w:id="0" /></w:p><w:sectPr w:rsidR="00EC3BBB" w:rsidRPr="00651722"><w:headerReference ns1:id="rId7" w:type="default" /><w:footerReference ns1:id="rId8" w:type="default" /><w:pgSz w:h="15840" w:w="12240" /><w:pgMar w:bottom="1440" w:footer="708" w:gutter="0" w:header="708" w:left="1440" w:right="1440" w:top="1440" /><w:cols w:space="708" /><w:docGrid w:linePitch="360" /></w:sectPr></w:body><w:br w:type="page" /><w:body><w:p w:rsidP="007B2B98" w:rsidR="00EC3BBB" w:rsidRDefault="00651722" w:rsidRPr="00651722"><w:r><w:t xml:space="preserve">This is a template for the </w:t></w:r><w:r><w:t>2b v ~2b</w:t></w:r><w:r><w:t xml:space="preserve"> merge_list test case</w:t></w:r><w:bookmarkStart w:id="0" w:name="_GoBack" /><w:bookmarkEnd w:id="0" /></w:p><w:sectPr w:rsidR="00EC3BBB" w:rsidRPr="00651722"><w:headerReference ns1:id="rId7" w:type="default" /><w:footerReference ns1:id="rId8" w:type="default" /><w:pgSz w:h="15840" w:w="12240" /><w:pgMar w:bottom="1440" w:footer="708" w:gutter="0" w:header="708" w:left="1440" w:right="1440" w:top="1440" /><w:cols w:space="708" /><w:docGrid w:linePitch="360" /></w:sectPr></w:body></w:document>'
        )  # noqa

        self.assert_equal_tree(expected_tree,
                               get_document_body_part(document).getroot())
Пример #2
0
    def test_pages_with_multiple_pages(self):
        """
        This also tests that merge_pages produces a multiple paged document,
        however this template already contains two pages. So the result should
        be 3 * 2 pages.
        """
        document = MailMerge(
            path.join(path.dirname(__file__), 'test_merge_pages_paged.docx'))
        self.assertEqual(document.get_merge_fields(), {'fieldname'})

        document.merge_pages([
            {
                'fieldname': "xyz"
            },
            {
                'fieldname': "abc"
            },
            {
                'fieldname': "2b v ~2b"
            },
        ])

        with tempfile.TemporaryFile() as outfile:
            document.write(outfile)

        expected_tree = ElementTree.fromstring(
            '<w:document xmlns:ns1="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:body><w:p w:rsidP="007B2B98" w:rsidR="00507D2F" w:rsidRDefault="00651722"><w:r><w:t xml:space="preserve">This is a template for the </w:t></w:r><w:r><w:t>xyz</w:t></w:r><w:r><w:t xml:space="preserve"> merge_list test case</w:t></w:r><w:r w:rsidR="00507D2F"><w:t>, page 1</w:t></w:r></w:p><w:p w:rsidR="00507D2F" w:rsidRDefault="00507D2F"><w:r><w:br w:type="page" /></w:r></w:p><w:p w:rsidP="007B2B98" w:rsidR="00EC3BBB" w:rsidRDefault="00507D2F" w:rsidRPr="00651722"><w:r><w:lastRenderedPageBreak /><w:t xml:space="preserve">This is a template for the </w:t></w:r><w:r><w:t>xyz</w:t></w:r><w:r><w:t xml:space="preserve"> merge_list test case</w:t></w:r><w:r><w:t>, page 2</w:t></w:r><w:bookmarkStart w:id="0" w:name="_GoBack" /><w:bookmarkEnd w:id="0" /></w:p><w:sectPr w:rsidR="00EC3BBB" w:rsidRPr="00651722"><w:headerReference ns1:id="rId7" w:type="default" /><w:footerReference ns1:id="rId8" w:type="default" /><w:pgSz w:h="15840" w:w="12240" /><w:pgMar w:bottom="1440" w:footer="708" w:gutter="0" w:header="708" w:left="1440" w:right="1440" w:top="1440" /><w:cols w:space="708" /><w:docGrid w:linePitch="360" /></w:sectPr></w:body><w:br w:type="page" /><w:body><w:p w:rsidP="007B2B98" w:rsidR="00507D2F" w:rsidRDefault="00651722"><w:r><w:t xml:space="preserve">This is a template for the </w:t></w:r><w:r><w:t>abc</w:t></w:r><w:r><w:t xml:space="preserve"> merge_list test case</w:t></w:r><w:r w:rsidR="00507D2F"><w:t>, page 1</w:t></w:r></w:p><w:p w:rsidR="00507D2F" w:rsidRDefault="00507D2F"><w:r><w:br w:type="page" /></w:r></w:p><w:p w:rsidP="007B2B98" w:rsidR="00EC3BBB" w:rsidRDefault="00507D2F" w:rsidRPr="00651722"><w:r><w:lastRenderedPageBreak /><w:t xml:space="preserve">This is a template for the </w:t></w:r><w:r><w:t>abc</w:t></w:r><w:r><w:t xml:space="preserve"> merge_list test case</w:t></w:r><w:r><w:t>, page 2</w:t></w:r><w:bookmarkStart w:id="0" w:name="_GoBack" /><w:bookmarkEnd w:id="0" /></w:p><w:sectPr w:rsidR="00EC3BBB" w:rsidRPr="00651722"><w:headerReference ns1:id="rId7" w:type="default" /><w:footerReference ns1:id="rId8" w:type="default" /><w:pgSz w:h="15840" w:w="12240" /><w:pgMar w:bottom="1440" w:footer="708" w:gutter="0" w:header="708" w:left="1440" w:right="1440" w:top="1440" /><w:cols w:space="708" /><w:docGrid w:linePitch="360" /></w:sectPr></w:body><w:br w:type="page" /><w:body><w:p w:rsidP="007B2B98" w:rsidR="00507D2F" w:rsidRDefault="00651722"><w:r><w:t xml:space="preserve">This is a template for the </w:t></w:r><w:r><w:t>2b v ~2b</w:t></w:r><w:r><w:t xml:space="preserve"> merge_list test case</w:t></w:r><w:r w:rsidR="00507D2F"><w:t>, page 1</w:t></w:r></w:p><w:p w:rsidR="00507D2F" w:rsidRDefault="00507D2F"><w:r><w:br w:type="page" /></w:r></w:p><w:p w:rsidP="007B2B98" w:rsidR="00EC3BBB" w:rsidRDefault="00507D2F" w:rsidRPr="00651722"><w:r><w:lastRenderedPageBreak /><w:t xml:space="preserve">This is a template for the </w:t></w:r><w:r><w:t>2b v ~2b</w:t></w:r><w:r><w:t xml:space="preserve"> merge_list test case</w:t></w:r><w:r><w:t>, page 2</w:t></w:r><w:bookmarkStart w:id="0" w:name="_GoBack" /><w:bookmarkEnd w:id="0" /></w:p><w:sectPr w:rsidR="00EC3BBB" w:rsidRPr="00651722"><w:headerReference ns1:id="rId7" w:type="default" /><w:footerReference ns1:id="rId8" w:type="default" /><w:pgSz w:h="15840" w:w="12240" /><w:pgMar w:bottom="1440" w:footer="708" w:gutter="0" w:header="708" w:left="1440" w:right="1440" w:top="1440" /><w:cols w:space="708" /><w:docGrid w:linePitch="360" /></w:sectPr></w:body></w:document>'
        )  # noqa

        self.assert_equal_tree(expected_tree,
                               get_document_body_part(document).getroot())
Пример #3
0
def mailMerge(order_list, master_order_list, dest_path):

    #directory = os.getcwd()

    if os.path.isfile(f'{dest_path}/Walmart BOL {load_no}.docx'):
        os.remove(f'{dest_path}/Walmart BOL {load_no}.docx')

    if os.path.isfile(
            f'{dest_path}/Walmart Master BOL Load ID {load_no}.docx'):
        os.remove(f'{dest_path}/Walmart Master BOL Load ID {load_no}.docx')

    bol = MailMerge('bol_template.docx')
    bol.merge_pages(order_list)
    bol.write(f'{dest_path}/Walmart BOL {load_no}.docx')

    master_bol = MailMerge('master_bol_template.docx')
    master_bol.merge_pages(master_order_list)
    master_bol.write(f'{dest_path}/Walmart Master BOL Load ID {load_no}.docx')

    if sys.platform == 'darwin':

        def openFolder(path):
            subprocess.Popen(['open', '--', path])
    elif sys.platform == 'linux2':

        def openFolder(path):
            subprocess.Popen(['xdg-open', '--', path])
    elif sys.platform == 'win32':

        def openFolder(path):
            subprocess.Popen(['explorer', path])

    openFolder(dest_path)
Пример #4
0
    def merge(self, mergefields, word_path):
        print('WordMerge.merge')
        print(word_path)  # DEBUG

        word_template = MailMerge(self.template_path)
        word_template.merge_pages([mergefield._asdict() for mergefield in mergefields.itertuples()])
        word_template.write(word_path)
Пример #5
0
def render_to_word(template_src: object,
                   doc_name: object,
                   context_dict: object = {}) -> object:
    document = MailMerge(template_src)
    document.merge_pages([
        context_dict,
    ])
    document.write(doc_name)
Пример #6
0
 def merge_file_fields_tables(self, doc_path, inserted_fields,
                              inserted_tables2, filename):
     document = MailMerge(doc_path)
     for i in inserted_tables2:
         for j in i:
             a = list(j.keys())[0]
         document.merge_rows(a, i)
     document.merge_pages([inserted_fields])
     document.write(filename)
     return filename
Пример #7
0
def generate():
    info=getquestions()
    print(info)
    template="./template.docx"
    doc=MailMerge(template)
    doc.merge_pages([info])
    doc.write("./output.docx")
    document = Document('./output.docx')
    document.add_picture("D:\SIH2020\output..jpg",width=Inches(1),height=Inches(0.5))
    document.add_paragraph('Signature')
    document.save("./output.docx")
Пример #8
0
    def perform_mail_merge(self):
        """Performs a mail merge and creates a new docx file."""

        in_docx_path = self.template_docx_file_path
        if self.output_docx_name is None:
            out_docx_path = self.generate_out_filename()
        data = self.get_records_from_db()

        document = MailMerge(in_docx_path)
        document.merge_pages(data)
        document.write(out_docx_path)
        return
Пример #9
0
def populate_doc(frameX, frameY, patent_listX, patent_listY):
    template = "TEMPLATE 5.docx"
    document = MailMerge(template)
    XListofdict = []
    YListofdict = []
    XList2ofdict = []

    for x in range(len(patent_listX)):
        Xdict = {}
        Xdict["X_PAT_NUMBER"] = frameX.iloc[x, 0]
        Xdict["X_PAT_TITLE"] = frameX.iloc[x, 1]
        Xdict["X_PAT_ASSIGNEE"] = frameX.iloc[x, 6]
        Xdict["X_PAT_PUBDATE"] = frameX.iloc[x, 5]
        Xdict["X_PAT_APPDATE"] = frameX.iloc[x, 3]
        Xdict["X_PAT_PRIORDATE"] = frameX.iloc[x, 4]
        Xdict["X_PAT_INVENTORS"] = frameX.iloc[x, 7]
        Xdict["X_PAT_FAMILY"] = frameX.iloc[x, 8]
        XListofdict.append(Xdict)

    if len(patent_listY) > 1:
        print patent_listY
        for x in range(len(patent_listY)):
            Ydict = {}
            Ydict["Y_PAT_NUMBER"] = frameY.iloc[x, 0]
            Ydict["Y_PAT_TITLE"] = frameY.iloc[x, 1]
            Ydict["Y_PAT_ASSIGNEE"] = frameY.iloc[x, 6]
            Ydict["Y_PAT_PUBDATE"] = frameY.iloc[x, 5]
            Ydict["Y_PAT_APPDATE"] = frameY.iloc[x, 3]
            Ydict["Y_PAT_PRIORDATE"] = frameY.iloc[x, 4]
            Ydict["Y_PAT_INVENTORS"] = frameY.iloc[x, 7]
            Ydict["Y_PAT_FAMILY"] = frameY.iloc[x, 8]
            YListofdict.append(Ydict)

    for x in range(len(patent_listX)):
        Xdict1 = {}
        Xdict1["X_PAT_{}_NUMBER".format(x + 1)] = frameX.iloc[x, 0]
        Xdict1["X_PAT_{}_TITLE".format(x + 1)] = frameX.iloc[x, 1]
        Xdict1["X_PAT_{}_ASSIGNEE".format(x + 1)] = frameX.iloc[x, 6]
        Xdict1["X_PAT_{}_PUBDATE".format(x + 1)] = frameX.iloc[x, 5]
        Xdict1["X_PAT_{}_APPDATE".format(x + 1)] = frameX.iloc[x, 3]
        Xdict1["X_PAT_{}_PRIORDATE".format(x + 1)] = frameX.iloc[x, 4]
        Xdict1["X_PAT_{}_INVENTORS".format(x + 1)] = frameX.iloc[x, 7]
        Xdict1["X_PAT_{}_FAMILY".format(x + 1)] = frameX.iloc[x, 8]
        XList2ofdict.append(Xdict1)

    #print YListofdict
    document.merge_rows('X_PAT_NUMBER', XListofdict)
    document.merge_rows('Y_PAT_NUMBER', YListofdict)
    document.merge_pages(XList2ofdict)
    #document.merge(**Ydict)
    document.write('NEW REPORT1.docx')
Пример #10
0
    def replace_mailing_merge_and_convert_to_pdf(self):

        with open(self.data_mailingMerge) as f:
            data = json.load(f)['data']
        len_data = len(data)

        if not os.path.exists(self.output_Word):
            os.makedirs(self.output_Word)

        if not os.path.exists(self.output_PDF):
            os.makedirs(self.output_PDF)

        if self.multiple_files:
            for index, input in enumerate(data):
                print('creating {}/{} ...'.format(index, len_data))
                document = MailMerge(self.word_template)
                document.merge(**input)

                word_output = os.path.join(
                    self.output_Word, self.fileName_prefix + str(index + 1) +
                    self.word_extension)
                document.write(word_output)

                # convert to PDF
                if self.convert_to_pdf:
                    subprocess.check_output([
                        '/Applications/LibreOffice.app/Contents/MacOS/soffice',
                        '--convert-to', 'pdf', '--outdir', self.output_PDF,
                        word_output
                    ])
        else:
            print("creating one file containing {} mails...".format(len_data))
            document = MailMerge(self.word_template)
            document.merge_pages(data)

            word_output = os.path.join(
                self.output_Word, self.fileName_prefix + self.word_extension)
            document.write(word_output)

            # convert to PDF
            if self.convert_to_pdf:
                subprocess.check_output([
                    '/Applications/LibreOffice.app/Contents/MacOS/soffice',
                    '--convert-to', 'pdf', '--outdir', self.output_PDF,
                    word_output
                ])

        print('replace_mailingMerge_and_convertToPDF is done !')
Пример #11
0
def patient_report(data):
    patient_data = data.get('patient')
    ekgs_data = data.get('ekgs')

    for item in ekgs_data:
        for key, value in item.items():
            item[key] = str(value)

    document = MailMerge(patient_template)
    document.merge_pages([patient_data])
    document.merge_rows('ekg_id', ekgs_data)
    filename = f"Отчет_по_пациенту_{patient_data.get('patient_id')}.docx"
    new_file_path = f"{path}/templates/{filename}"
    document.write(new_file_path)

    return filename
    def test_pages(self):
        document = MailMerge(path.join(path.dirname(__file__), 'test_merge_pages.docx'))
        self.assertEqual(document.get_merge_fields(), {'fieldname'})

        document.merge_pages([
            {'fieldname': "xyz"},
            {'fieldname': "abc"},
            {'fieldname': "2b v ~2b"},
        ])

        with tempfile.TemporaryFile() as outfile:
            document.write(outfile)

        expected_tree = etree.fromstring('<w:document xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:ns1="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" mc:Ignorable="w14 wp14"><w:body><w:p w:rsidP="007B2B98" w:rsidR="00EC3BBB" w:rsidRDefault="00651722" w:rsidRPr="00651722"><w:r><w:t xml:space="preserve">This is a template for the </w:t></w:r><w:r><w:t>xyz</w:t></w:r><w:r><w:t xml:space="preserve"> merge_list test case</w:t></w:r><w:bookmarkStart w:id="0" w:name="_GoBack" /><w:bookmarkEnd w:id="0" /></w:p><w:sectPr w:rsidR="00EC3BBB" w:rsidRPr="00651722"><w:headerReference ns1:id="rId7" w:type="default" /><w:footerReference ns1:id="rId8" w:type="default" /><w:pgSz w:h="15840" w:w="12240" /><w:pgMar w:bottom="1440" w:footer="708" w:gutter="0" w:header="708" w:left="1440" w:right="1440" w:top="1440" /><w:cols w:space="708" /><w:docGrid w:linePitch="360" /></w:sectPr></w:body><w:br w:type="page" /><w:body><w:p w:rsidP="007B2B98" w:rsidR="00EC3BBB" w:rsidRDefault="00651722" w:rsidRPr="00651722"><w:r><w:t xml:space="preserve">This is a template for the </w:t></w:r><w:r><w:t>abc</w:t></w:r><w:r><w:t xml:space="preserve"> merge_list test case</w:t></w:r><w:bookmarkStart w:id="0" w:name="_GoBack" /><w:bookmarkEnd w:id="0" /></w:p><w:sectPr w:rsidR="00EC3BBB" w:rsidRPr="00651722"><w:headerReference ns1:id="rId7" w:type="default" /><w:footerReference ns1:id="rId8" w:type="default" /><w:pgSz w:h="15840" w:w="12240" /><w:pgMar w:bottom="1440" w:footer="708" w:gutter="0" w:header="708" w:left="1440" w:right="1440" w:top="1440" /><w:cols w:space="708" /><w:docGrid w:linePitch="360" /></w:sectPr></w:body><w:br w:type="page" /><w:body><w:p w:rsidP="007B2B98" w:rsidR="00EC3BBB" w:rsidRDefault="00651722" w:rsidRPr="00651722"><w:r><w:t xml:space="preserve">This is a template for the </w:t></w:r><w:r><w:t>2b v ~2b</w:t></w:r><w:r><w:t xml:space="preserve"> merge_list test case</w:t></w:r><w:bookmarkStart w:id="0" w:name="_GoBack" /><w:bookmarkEnd w:id="0" /></w:p><w:sectPr w:rsidR="00EC3BBB" w:rsidRPr="00651722"><w:headerReference ns1:id="rId7" w:type="default" /><w:footerReference ns1:id="rId8" w:type="default" /><w:pgSz w:h="15840" w:w="12240" /><w:pgMar w:bottom="1440" w:footer="708" w:gutter="0" w:header="708" w:left="1440" w:right="1440" w:top="1440" /><w:cols w:space="708" /><w:docGrid w:linePitch="360" /></w:sectPr></w:body></w:document>')  # noqa

        self.assert_equal_tree(expected_tree, get_document_body_part(document).getroot())
Пример #13
0
 def mail(self):
     template = "a.docx"
     document = MailMerge(template)
     file = QFileDialog.getSaveFileName(self, 'Enregistrer Fichier',
                                        str(self.m.text()),
                                        ("Word file (*.docx)"))
     w = document.get_merge_fields()
     w = sorted(w)
     d = {}
     h = [0, 1, 2, 3, 4, 5]
     li = []
     for x in range(self.tbl.rowCount()):
         for i in range(len(h)):
             d[w[i]] = self.tbl.item(x, h[i]).text()
         li.append(dict(d))
     document.merge_pages(li)
     document.write(file[0])
    def test_pages_with_multiple_pages(self):
        """
        This also tests that merge_pages produces a multiple paged document,
        however this template already contains two pages. So the result should
        be 3 * 2 pages.
        """
        document = MailMerge(path.join(path.dirname(__file__), 'test_merge_pages_paged.docx'))
        self.assertEqual(document.get_merge_fields(), {'fieldname'})

        document.merge_pages([
            {'fieldname': "xyz"},
            {'fieldname': "abc"},
            {'fieldname': "2b v ~2b"},
        ])

        with tempfile.TemporaryFile() as outfile:
            document.write(outfile)

        expected_tree = ElementTree.fromstring('<w:document xmlns:ns1="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:body><w:p w:rsidP="007B2B98" w:rsidR="00507D2F" w:rsidRDefault="00651722"><w:r><w:t xml:space="preserve">This is a template for the </w:t></w:r><w:r><w:t>xyz</w:t></w:r><w:r><w:t xml:space="preserve"> merge_list test case</w:t></w:r><w:r w:rsidR="00507D2F"><w:t>, page 1</w:t></w:r></w:p><w:p w:rsidR="00507D2F" w:rsidRDefault="00507D2F"><w:r><w:br w:type="page" /></w:r></w:p><w:p w:rsidP="007B2B98" w:rsidR="00EC3BBB" w:rsidRDefault="00507D2F" w:rsidRPr="00651722"><w:r><w:lastRenderedPageBreak /><w:t xml:space="preserve">This is a template for the </w:t></w:r><w:r><w:t>xyz</w:t></w:r><w:r><w:t xml:space="preserve"> merge_list test case</w:t></w:r><w:r><w:t>, page 2</w:t></w:r><w:bookmarkStart w:id="0" w:name="_GoBack" /><w:bookmarkEnd w:id="0" /></w:p><w:sectPr w:rsidR="00EC3BBB" w:rsidRPr="00651722"><w:headerReference ns1:id="rId7" w:type="default" /><w:footerReference ns1:id="rId8" w:type="default" /><w:pgSz w:h="15840" w:w="12240" /><w:pgMar w:bottom="1440" w:footer="708" w:gutter="0" w:header="708" w:left="1440" w:right="1440" w:top="1440" /><w:cols w:space="708" /><w:docGrid w:linePitch="360" /></w:sectPr></w:body><w:br w:type="page" /><w:body><w:p w:rsidP="007B2B98" w:rsidR="00507D2F" w:rsidRDefault="00651722"><w:r><w:t xml:space="preserve">This is a template for the </w:t></w:r><w:r><w:t>abc</w:t></w:r><w:r><w:t xml:space="preserve"> merge_list test case</w:t></w:r><w:r w:rsidR="00507D2F"><w:t>, page 1</w:t></w:r></w:p><w:p w:rsidR="00507D2F" w:rsidRDefault="00507D2F"><w:r><w:br w:type="page" /></w:r></w:p><w:p w:rsidP="007B2B98" w:rsidR="00EC3BBB" w:rsidRDefault="00507D2F" w:rsidRPr="00651722"><w:r><w:lastRenderedPageBreak /><w:t xml:space="preserve">This is a template for the </w:t></w:r><w:r><w:t>abc</w:t></w:r><w:r><w:t xml:space="preserve"> merge_list test case</w:t></w:r><w:r><w:t>, page 2</w:t></w:r><w:bookmarkStart w:id="0" w:name="_GoBack" /><w:bookmarkEnd w:id="0" /></w:p><w:sectPr w:rsidR="00EC3BBB" w:rsidRPr="00651722"><w:headerReference ns1:id="rId7" w:type="default" /><w:footerReference ns1:id="rId8" w:type="default" /><w:pgSz w:h="15840" w:w="12240" /><w:pgMar w:bottom="1440" w:footer="708" w:gutter="0" w:header="708" w:left="1440" w:right="1440" w:top="1440" /><w:cols w:space="708" /><w:docGrid w:linePitch="360" /></w:sectPr></w:body><w:br w:type="page" /><w:body><w:p w:rsidP="007B2B98" w:rsidR="00507D2F" w:rsidRDefault="00651722"><w:r><w:t xml:space="preserve">This is a template for the </w:t></w:r><w:r><w:t>2b v ~2b</w:t></w:r><w:r><w:t xml:space="preserve"> merge_list test case</w:t></w:r><w:r w:rsidR="00507D2F"><w:t>, page 1</w:t></w:r></w:p><w:p w:rsidR="00507D2F" w:rsidRDefault="00507D2F"><w:r><w:br w:type="page" /></w:r></w:p><w:p w:rsidP="007B2B98" w:rsidR="00EC3BBB" w:rsidRDefault="00507D2F" w:rsidRPr="00651722"><w:r><w:lastRenderedPageBreak /><w:t xml:space="preserve">This is a template for the </w:t></w:r><w:r><w:t>2b v ~2b</w:t></w:r><w:r><w:t xml:space="preserve"> merge_list test case</w:t></w:r><w:r><w:t>, page 2</w:t></w:r><w:bookmarkStart w:id="0" w:name="_GoBack" /><w:bookmarkEnd w:id="0" /></w:p><w:sectPr w:rsidR="00EC3BBB" w:rsidRPr="00651722"><w:headerReference ns1:id="rId7" w:type="default" /><w:footerReference ns1:id="rId8" w:type="default" /><w:pgSz w:h="15840" w:w="12240" /><w:pgMar w:bottom="1440" w:footer="708" w:gutter="0" w:header="708" w:left="1440" w:right="1440" w:top="1440" /><w:cols w:space="708" /><w:docGrid w:linePitch="360" /></w:sectPr></w:body></w:document>')  # noqa

        self.assert_equal_tree(expected_tree, get_document_body_part(document).getroot())
Пример #15
0
def doc_report(data):
    patient_data = data.get('patient')
    ekgs_data = data.get('ekgs')

    svg = data.get('svg')

    svg = '<svg' + svg.split('<svg')[-1]
    svg = svg.split('<path')
    svg = svg[0] + ''.join(['<path ' + 'style="fill:none;"' + p for p in svg[1:]])

    with open(f"{path}/templates/img.svg", 'w') as f:
        f.write(svg)
    drawing = svg2rlg(f"{path}/templates/img.svg")
    sx = sy = 3
    drawing.width, drawing.height = drawing.minWidth() * sx, drawing.height * sy
    drawing.scale(sx, sy)
    image_path = f"{path}/templates/img.jpg"
    renderPM.drawToFile(drawing, image_path, fmt="JPG")

    for item in ekgs_data:
        for key, value in item.items():
            item[key] = str(value)

    document = MailMerge(doc_template)
    document.merge_pages([patient_data])
    document.merge_rows('ekg_id', ekgs_data)
    filename = f"Отчет_по_пациенту_{patient_data.get('patient_id')}_(для_врача).docx"
    new_file_path = f"{path}/templates/{filename}"
    document.write(new_file_path)

    tpl = DocxTemplate(new_file_path)
    context = {
        'Image': InlineImage(tpl, image_path, width=Mm(190))
    }
    jinja_env = jinja2.Environment(autoescape=True)
    tpl.render(context, jinja_env)
    tpl.save(new_file_path)

    return filename
Пример #16
0
    def __parse_document(self):

        for entry, recipient in enumerate(self.fields, start=0):

            # Create a document based off denoted template
            document = MailMerge(self.template)

            # Note the district as integer for file naming
            district = recipient["CongressionalDistrict"]

            # Convert Congressional District as string (must be in string form to be copied to word document)
            recipient["CongressionalDistrict"] = str(
                recipient["CongressionalDistrict"])

            lastName = self.__getLastName(recipient["Name"])

            # Merge documents allows you to pass a dictionary instead of going through each parameter settings
            document.merge_pages([recipient])

            # Write the document to the corresponding folder based on Congressional District
            document.write(
                '/Users/tomshannon/Documents/GitHub/WSGC-Annual-Report-Mail-Merge-Tool/program_output/CD%d/%s_%s.docx'
                % (district, lastName, self.sheet_name))
Пример #17
0
    def to_word(self, file_name):
        """
        Word 파일로 저장한다.
        """
        template = "output_word_template.docx"

        document = MailMerge(template)

        # sort db and save into sorted_db
        sorted_db_list = sorted(sorted(self.__db.items(), key=lambda x: x[0]))
        sorted_db = OrderedDict(sorted_db_list)

        merge_folder_item = {}
        for (a_file, a_file_data) in sorted_db.items():
            merge_item = {}
            merge_item["SPS_File_Name"] = a_file_data[1][0]
            merge_item["SPS_File_MTime"] = a_file_data[1][2]
            merge_item["SPS_File_Hash"] = a_file_data[1][3]
            merge_item["SPS_File_Size"] = str(a_file_data[1][4])
            merge_item["SPS_File_LOC"] = str(a_file_data[1][5])

            try:
                merge_folder_item[a_file_data[1][1]].append(merge_item)
            except:
                merge_folder_item[a_file_data[1][1]] = []
                merge_folder_item[a_file_data[1][1]].append(merge_item)

        all_merge = []
        for (a_folder, a_merge_data) in merge_folder_item.items():
            d = {}
            d["SPS_Folder_Name"] = a_folder
            d["SPS_File_Name"] = a_merge_data
            all_merge.append(d)

        document.merge_pages(all_merge)

        document.write(file_name)
Пример #18
0
def create_tsk_journal(datasrc: str, template: str, output: str, **kwargs):
    try:
        data = read_csv(datasrc)
    except FileNotFoundError as e:
        e.errno    = -1
        e.filename = datasrc
        e.strerror = 'ملف بيانات المذكرة غير موجود'
        return e

    if 'weekrange' in kwargs:
        filter = str(kwargs['weekrange'][0]) + '<= weeknum <= ' + str(kwargs['weekrange'][1])
        weekplan = data.query(filter)
    else:
        weekplan = data

    fields = weekplan.to_dict('records')
    document = MailMerge(template)
    document.merge_pages(fields)
    document.write(output)

    # for windows only systems
    # is like double clicking on the file
    if 'openit' in kwargs and kwargs['openit']:
        os.startfile(output)
Пример #19
0
def show():
    read_excel()
    new_folder()
    a = []
    for var in v:
        a.append(var.get())

    #模板文档
    template0_ELB = r".\tem\ELB_template.docx"
    template1_ELCK = r".\tem\ELCK_template.docx"
    template2_ELF = r".\tem\ELF_template.docx"
    template3_ELM = r".\tem\ELM_template.docx"
    template4_ELN = r".\tem\ELN_template.docx"
    template5_ELP = r".\tem\ELP_template.docx"
    template6_ELQC = r".\tem\ELQC_template.docx"
    template7_ELW = r".\tem\ELW_template.docx"
    template8_ELHC = r".\tem\ELHC_template.docx"
    template9_ELSMT = r".\tem\ELSMT_template.docx"
    template10_ELT = r".\tem\ELT_template.docx"
    template11_ELY = r".\tem\ELY_template.docx"
    template12_FIL_H = r".\tem\ELFIL_film_h.docx"
    template13_FIL_X = r".\tem\ELFIL_film_x.docx"
    template14_ELREF = r".\tem\ELREF_template.docx"
    template15_ELPCB = r".\tem\ELPCB_template.docx"

    #主判断
    if a[0] == 1:  #ELB
        document0 = MailMerge(template0_ELB)
        cust_1 = {
            'name': Pro_name,
            'bianhao': str(tjp_num),
            'custom_code': str(cus_num),
            'time': '{:%Y-%m-%d}'.format(date.today()),
            'pack_name': str(in_pack),
        }
        document0.merge_pages([cust_1])
        document0.write("./{}/ELB{}-{}.docx".format(new_folder_name, tjp_num,
                                                    Pro_name))  #需增加版本信息版本

    if a[1] == 1:  #ELCK
        document1 = MailMerge(template1_ELCK)
        cust_1 = {
            'name': Pro_name,
            'bianhao': str(tjp_num),
            'P_name': pcb_name,
            'time': '{:%Y-%m-%d}'.format(date.today()),
            'pack_name': str(in_pack),
        }
        document1.merge_pages([cust_1])
        document1.write("./{}/ELB{}-{}.docx".format(new_folder_name, tjp_num,
                                                    Pro_name))  #需修改

    if a[2] == 1:  #ELF
        document2 = MailMerge(template2_ELF)
        cust_1 = {
            'name': Pro_name,
            'bianhao': str(tjp_num),
            'P_name': pcb_name,
            'R_name': ref_name,
            'time': '{:%Y-%m-%d}'.format(date.today()),
        }
        document2.merge_pages([cust_1])
        document2.write("./{}/ELF{}-{}.docx".format(new_folder_name, tjp_num,
                                                    Pro_name))  #需修改

    if a[3] == 1:  #ELM
        document3 = MailMerge(template3_ELM)
        cust_1 = {
            'name': Pro_name,
            'bianhao': str(tjp_num),
            'F_name': film_name,
            'time': '{:%Y-%m-%d}'.format(date.today())
        }
        document3.merge_pages([cust_1])
        document3.write("./{}/ELM{}-{}.docx".format(new_folder_name, tjp_num,
                                                    Pro_name))  #需修改

    if a[4] == 1:  #ELN
        document4 = MailMerge(template4_ELN)
        cust_1 = {
            'name': Pro_name,
            'bianhao': str(tjp_num),
            'P_name': pcb_name,
            'time': '{:%Y-%m-%d}'.format(date.today())
        }
        document4.merge_pages([cust_1])
        document4.write("./{}/ELN{}-{}.docx".format(new_folder_name, tjp_num,
                                                    Pro_name))  #需修改

    if a[5] == 1:  #ELP
        document5 = MailMerge(template5_ELP)
        cust_1 = {
            'name': Pro_name,
            'bianhao': str(tjp_num),
            'P_name': pcb_name,
            'time': '{:%Y-%m-%d}'.format(date.today())
        }
        document5.merge_pages([cust_1])
        document5.write("./{}/ELP{}-{}.docx".format(new_folder_name, tjp_num,
                                                    Pro_name))

    if a[6] == 1:  #ELQC
        document6 = MailMerge(template6_ELQC)
        cust_1 = {
            'name': Pro_name,
            'bianhao': str(tjp_num),
            'time': '{:%Y-%m-%d}'.format(date.today())
        }
        document6.merge_pages([cust_1])
        document6.write("./{}/ELQC{}-{}.docx".format(new_folder_name, tjp_num,
                                                     Pro_name))  #需修改

    if a[7] == 1:  #ELW
        document7 = MailMerge(template7_ELW)
        cust_1 = {
            'name': Pro_name,
            'bianhao': str(tjp_num),
            'custom_code': str(cus_num),
            'pcb_name': pcb_name,
            'pcb_sup': pcb_sup,
            'pin_head': pin_head,
            'pin_name': pin_name,
            'ref_name': ref_name,
            'ref_texture': ref_texture,
            'ref_ink': ref_ink,
            'ref_sup': ref_sup,
            'film_name': film_name,
            'film_sup': film_sup,
            'easy_tape': easy_tape,
            'easy_sup': easy_sup,
            'in_pack': in_pack,
            'out_pack': out_pack,
            'time': '{:%Y-%m-%d}'.format(date.today())
        }
        document7.merge_pages([cust_1])
        document7.write("./{}/ELW{}-{}.docx".format(new_folder_name, tjp_num,
                                                    Pro_name))  #需修改

    if a[8] == 1:  #ELHC
        document8 = MailMerge(template8_ELHC)
        cust_1 = {
            'name': Pro_name,
            'bianhao': str(tjp_num),
            'custom_code': str(cus_num),
            'time': '{:%Y-%m-%d}'.format(date.today())
        }
        document8.merge_pages([cust_1])
        document8.write("./{}/ELHC{}-{}.docx".format(new_folder_name, tjp_num,
                                                     Pro_name))  #需修改

    if a[9] == 1:  #ELSMT
        document9 = MailMerge(template9_ELSMT)
        cust_1 = {
            'name': Pro_name,
            'bianhao': str(tjp_num),
            'P_name': pcb_name,
            'pcb_sup': pcb_sup,
            'time': '{:%Y-%m-%d}'.format(date.today())
        }
        document9.merge_pages([cust_1])
        document9.write("./{}/ELSMT{}-{}SMT加工技术文件.docx".format(
            new_folder_name, tjp_num, Pro_name))  #需修改

    if a[10] == 1:  #ELT
        document10 = MailMerge(template10_ELT)
        cust_1 = {
            'name': Pro_name,
            'bianhao': str(tjp_num),
            'custom_code': str(cus_num),
            'time': '{:%Y-%m-%d}'.format(date.today())
        }
        document10.merge_pages([cust_1])
        document10.write("./{}/ELT{}-{}.docx".format(new_folder_name, tjp_num,
                                                     Pro_name))

    if a[11] == 1:  #ELY
        document11 = MailMerge(template11_ELY)
        cust_1 = {
            'name': Pro_name,
            'bianhao': str(tjp_num),
            'P_name': pcb_name,
            'ref_name': ref_name,
            'time': '{:%Y-%m-%d}'.format(date.today())
        }
        document11.merge_pages([cust_1])
        document11.write("./{}/ELY{}-{}.docx".format(new_folder_name, tjp_num,
                                                     Pro_name))

    if a[12] == 1:  #ELFIL_H  缺少film_texture
        document12 = MailMerge(template12_FIL_H)
        cust_1 = {
            'name': Pro_name,
            'bianhao': str(tjp_num),
            'supper': film_sup,
            # 'texture':,
            'time': '{:%Y-%m-%d}'.format(date.today())
        }
        document12.merge_pages([cust_1])
        document12.write("./{}/ELFIL{}面膜核准单({} {}).docx".format(
            new_folder_name, tjp_num, film_sup, Pro_name))

    if a[13] == 1:  #ELFIL_X
        document13 = MailMerge(template13_FIL_X)
        cust_1 = {
            'name': Pro_name,
            'bianhao': str(tjp_num),
            'supper': film_sup,
            'time': '{:%Y-%m-%d}'.format(date.today())
        }
        document13.merge_pages([cust_1])
        document13.write("./{}/ELFIL{}面膜限度样品({} {}).docx".format(
            new_folder_name, tjp_num, film_sup, Pro_name))

    if a[14] == 1:  #ELREF
        document14 = MailMerge(template14_ELREF)
        cust_1 = {
            'name': Pro_name,
            'bianhao': str(tjp_num),
            'ref_name': ref_name,
            'ref_texture': ref_texture,
            'ref_sup': ref_sup,
            'ref_ink': ref_ink,
            'time': '{:%Y-%m-%d}'.format(date.today()),
        }
        document14.merge_pages([cust_1])
        document14.write("./{}/ELREF{}塑壳材料核准单({}-{}).docx".format(
            new_folder_name, tjp_num, ref_sup, ref_name))

    if a[15] == 1:  #ELPCB
        document15 = MailMerge(template15_ELPCB)
        cust_1 = {
            'name': Pro_name,
            'bianhao': str(tjp_num),
            'time': '{:%Y-%m-%d}'.format(date.today()),
            'P_name': pcb_name,
            'pcb_sup': pcb_sup
        }
        document15.merge_pages([cust_1])
        document15.write("./{}/ELPCB{}线路板材料核准单({}-{}).docx".format(
            new_folder_name, tjp_num, pcb_sup, pcb_name))

    # if a[16] ==1: #ELPF
    #      document1 =MailMerge(template0_ELB)
    #      cust_1 = {'name': '1', #需修改读入
    #                'time': '{:%B %d,%Y}'.format(date.today()),
    #                'pack_name': '{:%Y-%m-%d}'.format(date.today()),
    #                'bianhao': '12342',
    #                'custom_code': '123'
    #                }
    #      document1.merge_pages([cust_1])
    #      document1.write("./{}.docx".format(12)) #需修改
    message()
Пример #20
0
def choice_tem():
    #模板清单
    tem0_ZDS = r".\ds_tem\tem0_zds.docx"
    tem1_ZDD = r".\ds_tem\tem1_zdd.docx"
    tem2_ZDT = r".\ds_tem\tem2_zdt.docx"
    tem3_ZDF = r".\ds_tem\tem3_zdf.docx"
    tem4_ZDP_1 = r".\ds_tem\tem4_zdp_1.docx"
    tem5_ZDP_2 = r".\ds_tem\tem5_zdp_2.docx"
    tem6_ZDP_3 = r".\ds_tem\tem6_zdp_3.docx"
    tem7_ZDP_4 = r".\ds_tem\tem7_zdp_4.docx"
    #判断
    sin_mul() #判断晶片单复数。
    jx() #判断晶片极性
    ink() #判断塑壳油墨
    power() #判断功率
    inch() #赋值尺寸 英寸
    cob() #赋值空封实封
    up_sm_colour = sm_colour.upper() #颜色大写
    up_colour1 = co1.upper()

    if tem_choice == 'S': #选择ZDS模板
        document = MailMerge(tem0_ZDS) #选择模板
        cust_1 = {'name': e1.get(),
                  'date1': '{:%B %d,%Y}'.format(date.today()),
                  'date2': '{:%Y-%m-%d}'.format(date.today()),
                  'spec_no': str(e2.get()),
                  'engineer': str(e3.get()),
                  'n_colour': sm_colour,
                  'up_sm_colour': up_sm_colour,
                  'jixing': jixing,
                  'colour_1':co1,
                  'element' : co1_ele,
                  'ink': ref_ink,
                  'vft': str(co1_VF_t),
                  'vfm': str(co1_VF_m),
                  'bo': str(co1_bo),
                  'bbo': str(co1_bbo),
                  'upcolour1': up_colour1,
                  'power':str(pw),
                  'inc':inc,
                  'milli': millimeter
                  }
        document.merge_pages([cust_1])
        document.write("./{}.docx".format(e1.get()))

    elif tem_choice == 'D': #选择ZDD模板
        document = MailMerge(tem1_ZDD)
        cust_1 = {'name': e1.get(),
                  'date1': '{:%B %d,%Y}'.format(date.today()),
                  'date2': '{:%Y-%m-%d}'.format(date.today()),
                  'spec_no': str(e2.get()),
                  'engineer': str(e3.get()),
                  'n_colour': sm_colour,
                  'up_sm_colour': up_sm_colour,
                  'jixing': jixing,
                  'colour_1':co1,
                  'element' : co1_ele,
                  'ink': ref_ink,
                  'vft': str(co1_VF_t),
                  'vfm': str(co1_VF_m),
                  'bo': str(co1_bo),
                  'bbo': str(co1_bbo),
                  'upcolour1': up_colour1,
                  'power': str(pw),
                  'inc': inc,
                  'milli': millimeter
                  }
        document.merge_pages([cust_1])
        document.write("./{}.docx".format(e1.get()))

    elif tem_choice == "T": #选择ZDT模板
        document = MailMerge(tem2_ZDT)
        cust_1 = {'name': e1.get(),
                  'date1': '{:%B %d,%Y}'.format(date.today()),
                  'date2': '{:%Y-%m-%d}'.format(date.today()),
                  'spec_no': str(e2.get()),
                  'engineer': str(e3.get()),
                  'n_colour': sm_colour,
                  'up_sm_colour': up_sm_colour,
                  'jixing': jixing,
                  'colour_1':co1,
                  'element' : co1_ele,
                  'ink': ref_ink,
                  'vft': str(co1_VF_t),
                  'vfm': str(co1_VF_m),
                  'bo': str(co1_bo),
                  'bbo': str(co1_bbo),
                  'upcolour1': up_colour1,
                  'power': str(pw),
                  'inc': inc,
                  'milli': millimeter
                  }
        document.merge_pages([cust_1])
        document.write("./{}.docx".format(e1.get()))

    elif tem_choice == 'F':
        document = MailMerge(tem3_ZDF)
        cust_1 = {'name': e1.get(),
                  'date1': '{:%B %d,%Y}'.format(date.today()),
                  'date2': '{:%Y-%m-%d}'.format(date.today()),
                  'spec_no': str(e2.get()),
                  'engineer': str(e3.get()),
                  'n_colour': sm_colour,
                  'up_sm_colour': up_sm_colour,
                  'jixing': jixing,
                  'colour_1':co1,
                  'element' : co1_ele,
                  'ink': ref_ink,
                  'vft': str(co1_VF_t),
                  'vfm': str(co1_VF_m),
                  'bo': str(co1_bo),
                  'bbo': str(co1_bbo),
                  'upcolour1': up_colour1,
                  'power': str(pw),
                  'inc': inc,
                  'milli': millimeter
                  }
        document.merge_pages([cust_1])
        document.write("./{}.docx".format(e1.get()))

    elif tem_choice == 'P' and chip_len == 1:
        document = MailMerge(tem4_ZDP_1)
        cust_1 = {'name': e1.get(),
                  'date1': '{:%B %d,%Y}'.format(date.today()),
                  'date2': '{:%Y-%m-%d}'.format(date.today()),
                  'spec_no': e2.get(),
                  'engineer': e3.get(),
                  'wide': e4.get(),
                  'length': e5.get(),
                  'colour_1': co1,
                  'n_colour': sm_colour,
                  'up_sm_colour': up_sm_colour,
                  'jixing': jixing,
                  'cob_chip':cob_chip,
                  'element' : co1_ele,
                  'ink': ref_ink,
                  'vft': str(co1_VF_t),
                  'vfm': str(co1_VF_m),
                  'bo': str(co1_bo),
                  'bbo': str(co1_bbo),
                  'upcolour1': up_colour1,
                  'power': str(pw)
                  }
        document.merge_pages([cust_1])
        document.write("./{}.docx".format(e1.get()))

    elif tem_choice == 'P' and chip_len == 2:
        document = MailMerge(tem5_ZDP_2)
        cust_1 = {'name': e1.get(),
                  'date1': '{:%B %d,%Y}'.format(date.today()),
                  'date2': '{:%Y-%m-%d}'.format(date.today()),
                  'spec_no': e2.get(),
                  'engineer': e3.get(),
                  'wide': e4.get(),
                  'length': e5.get(),
                  'n_colour': sm_colour,
                  'up_sm_colour': up_sm_colour,
                  'jixing': jixing,
                  # 'colour_1':co1,
                  }
        document.merge_pages([cust_1])
        document.write("./{}.docx".format(e1.get()))

    elif tem_choice == 'P' and chip_len == 3:
        document = MailMerge(tem6_ZDP_3)
        cust_1 = {'name': e1.get(),
                  'date1': '{:%B %d,%Y}'.format(date.today()),
                  'date2': '{:%Y-%m-%d}'.format(date.today()),
                  'spec_no': e2.get(),
                  'engineer': e3.get(),
                  'wide': e4.get(),
                  'length': e5.get(),
                  'n_colour': sm_colour,
                  'up_sm_colour': up_sm_colour,
                  'jixing': jixing,
                  # 'colour_1':co1,
                  }
        document.merge_pages([cust_1])
        document.write("./{}.docx".format(e1.get()))

    elif tem_choice == 'P' and chip_len == 4:
        document = MailMerge(tem7_ZDP_4)
        cust_1 = {'name': e1.get(),
                  'date1': '{:%B %d,%Y}'.format(date.today()),
                  'date2': '{:%Y-%m-%d}'.format(date.today()),
                  'spec_no': e2.get(),
                  'engineer': e3.get(),
                  'wide': e4.get(),
                  'length': e5.get(),
                  'n_colour': sm_colour,
                  'up_sm_colour': up_sm_colour,
                  'jixing': jixing,
                  # 'colour_1':co1,
                  }
        document.merge_pages([cust_1])
        document.write("./{}.docx".format(e1.get()))
    global template
Пример #21
0
 def merge_file_fields(self, doc_path, inserted_fields, filename):
     dict = inserted_fields
     document = MailMerge(doc_path)
     document.merge_pages([dict])
     document.write(filename)
     return filename
Пример #22
0
def response_sthlm(bidragcontainer):

    bidrag = bidragcontainer.bidrag
    persons = bidragcontainer.persons

    nr_persons = bidragcontainer.nr_persons_total
    persons = persons[:nr_persons]

    start = datetime.strptime(bidrag.dateFrom, DATE_FORMAT)
    end = datetime.strptime(bidrag.dateTo, DATE_FORMAT)
    nr_days = (end - start).days + 1

    data = {
        'kundnummer': bidrag.foreningsID,
        'foreningsnamn': bidrag.kar,
        'ledare': bidrag.contact,
        'ledartelefon': bidrag.contactphone,
        'ledaremail': bidrag.contactemail,
        'lov': u'X' if bidrag.hikeduringbreak else u'\u2610',
        'helg': u'\u2610' if bidrag.hikeduringbreak else u'X',
        'lagerplats': bidrag.site,
        'startdatum': bidrag.dateFrom,
        'slutdatum': bidrag.dateTo,
        'datum': date.today().strftime(DATE_FORMAT),
        'firmatecknare': bidrag.firmatecknare,
        'firmatecknartelefon': bidrag.firmatecknartelefon,
        'antalmedlemmar': str(bidragcontainer.nr_young_persons),
        'antaldagar': str(bidrag.days)  # Should be total number of days
    }

    persons_per_page = 16
    nr_pages, rest = divmod(nr_persons, persons_per_page)
    if rest > 0:
        nr_pages += 1
    pages = []
    for page_nr in range(nr_pages):
        page_data = copy.deepcopy(data)
        persons_in_page = persons[page_nr * persons_per_page:(page_nr + 1) *
                                  persons_per_page]
        for i, person in enumerate(persons_in_page):
            nr = i + 1
            page_data['namn%d' % nr] = person.name
            page_data['pa%d' % nr] = person.postal_address
            page_data['ar%d' % nr] = str(person.year)
        pages.append(page_data)

    document = MailMerge('templates/lagerbidragsmall_sthlm.docx')
    document.merge_pages(pages)

    bytesIO = io.BytesIO()
    document.write(bytesIO)
    resultbytes = bytesIO.getvalue()

    doc_name = "Lagerbidrag_%s_%s_%s.docx" % (bidrag.site, bidrag.dateFrom,
                                              bidrag.dateTo)
    ascii_doc_name = doc_name.encode('ascii', 'ignore')

    response = make_response(resultbytes)
    response.headers[
        'Content-Type'] = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
    response.headers[
        'Content-Disposition'] = 'attachment; filename=' + urllib.quote(
            ascii_doc_name)
    return response
}

고객_3 = {
    '등급': 'Bronze',
    '전화번호': '070-XXX-XXXX',
    '상호': '만나 청과',
    '구입총액': '200,000원',
    '배송한도': '70,000원',
    '주소': '대전시 123 아파트',
    '날짜': '{:%Y-%m-%d}'.format(date.today()),
    '할인': '2%',
    '수신자': '김유신'
}

document_2 = MailMerge(template_1)
document_2.merge_pages([고객_1, 고객_2, 고객_3])
document_2.write('example2.docx')

# Final Example includes a table with the sales history

구매이력 = [{
    '물품': '사과',
    '가격': '1,000원',
    '수량': '25개',
    '금액': '25,000원'
}, {
    '물품': '배',
    '가격': '2,000원',
    '수량': '10개',
    '금액': '20,000원'
}, {
Пример #24
0
     name_role.append(vars(inv))
 cif = path2 + 'Template Contact Information Form.docx'
 outpath = 'path/to/script/output/'
 email_types = {
     'noprior': noprior
 }  # add prior email template and mid/start templates
 for d in name_role:
     welcome_email = email_types[d['etype']]
     welcome_letter = path2 + 'Template Welcome Letter-{}.docx'.format(
         d['template_flag'])
     doc_letter = MailMerge(welcome_letter)
     doc_cif = MailMerge(cif)
     name1 = outpath + d['letter']
     name2 = outpath + d['cif']
     print('Package complete for', d['Last_Name'])
     doc_letter.merge_pages([d])
     doc_cif.merge_pages([d])
     doc_letter.write(name1)
     doc_cif.write(name2)
     doc_letter.close()
     doc_cif.close()
     outlook = win32.Dispatch('outlook.application')
     recipient = d['Last_Name']
     prot = d['Protocol_Number']
     titl = d['Protocol_Full_Title']
     cmt = d['Committee']
     cmt_abrv = d['Committee_Type']
     due_date = datetime.now() + timedelta(days=7)
     due_date_formatted = due_date.strftime('%d-%b-%y')
     document1 = Document(outpath + d['letter'])
     core_properties1 = document1.core_properties
Пример #25
0
# 템플릿 파일로 메일머지(mail-merge) 객체 만들기
document = MailMerge(template_filepath)

# 수신자 정보 입력 - 딕셔너리 형태
respondent1 = {
    'name': '이수민',
    'fax': '031-777-7777',
    'phone': '031-777-7700',
    'date': '%s년 %s월 %s일' % (dt.now().year, dt.now().month, dt.now().day),
    'title': '세금계산서 재발행 요청의 건',
    'memo': '2019년 8월분',
}

respondent2 = {
    'name': '박솔',
    'fax': '032-333-0007',
    'phone': '032-333-0800',
    'date': '%s년 %s월 %s일' % (dt.now().year, dt.now().month, dt.now().day),
    'title': '견적 문의',
    'memo': '공급 예정일 포함',
}

# 수신자 리스트를 메일머지 객체에 전달
respondents_list = [respondent1, respondent2]
document.merge_pages(respondents_list)

# 메일머지 객체를 MS Word 문서로 저장하기
output_filepath = os.path.join(cwd, "output",
                               "fax_cover_output_multi_pages.docx")
document.write(output_filepath)
Пример #26
0
                mrg_dt = {}
                count = 0
                for i in row:
                    count += 1
                    mrg_dt.update({str(object=count): str(object=i)})
#
# File Output:
# Using the previously saved variables each file is contructed with a unique file name using
# a combination of the time of generation and the username of the user running the job, proceed
# a set of fields defined in the configuration JSON file.
#
                rt = datetime.datetime.now().strftime("%Y%m%d%H%M%S%f")
                filename = outputdir1 + row[1] + '_' + row[
                    0] + '_' + rt + '_' + usr + outputtype1
                document = MailMerge(templatefile)
                document.merge_pages([mrg_dt])
                document.write(filename)
                print(filename)
                if os.path.exists(filename):
                    print(
                        "Document generation process sucessful, check the MERGE_REVIEW folder for the new file."
                    )
#
# Merge Error Handling:
# In line with the opertunistic nature and narrow function set this script errors fall into 2 categories,
# errors with the merge process or just not having a template. Errors with the merge process can occur,
# if for one or more reasons, the process or actual command line running the script is interrupted or for
# whatever in the rare occurance that their is incompatible formatting present in a template. Errors where
# there is no template present are exactly that, the document code called does not have an associated template
# in the template storage location defined above and is also not included in the file listing exceptions
# that are "nontemplate" codes.
Пример #27
0
def response_sthlm(bidragcontainer):
    per_diem = 35  # Amount per scout per day 2021
    h1_end = datetime(2021, 5, 31, 23, 59)

    bidrag = bidragcontainer.bidrag
    persons = bidragcontainer.persons

    nr_persons = bidragcontainer.nr_persons_total
    persons = persons[:nr_persons]

    start = datetime.strptime(bidrag.dateFrom, DATE_FORMAT)
    end = datetime.strptime(bidrag.dateTo, DATE_FORMAT)
    nr_days = (end - start).days + 1

    if bidrag.zipCode != "":
        zcParts = bidrag.zipCode.split()
        postnr = "".join(zcParts[:-1])  # remove possible space in zip code
        postort = zcParts[-1]

    today = date.today()
    data = {
        'organisationsnummer': bidrag.organisationsnummer,
        'kontonummer': bidrag.kontonummer,
        'kundnummer': bidrag.foreningsID,
        'foreningsnamn': bidrag.kar,
        'epost': bidrag.email,
        'ledare': bidrag.contact,
        'ledartelefon': bidrag.contactphone,
        'ledaremail': bidrag.contactemail,
        'lov': u'X' if bidrag.hikeduringbreak else u'\u2610',
        'helg': u'\u2610' if bidrag.hikeduringbreak else u'X',
        'lagerplats': bidrag.site,
        'startdatum': bidrag.dateFrom,
        'slutdatum': bidrag.dateTo,
        'datum': today.strftime(DATE_FORMAT),
        'dag': str(today.day),
        'manad': str(today.month),
        'ordforande': bidrag.firmatecknare,
        'ordforandetelefon': bidrag.firmatecknartelefon,
        'ordforandeemail': bidrag.firmatecknaremail,
        'adress': bidrag.address,
        'postnr': postnr,
        'postort': postort,
        'bankkonto': bidrag.account,
        'antalmedlemmar': str(bidragcontainer.nr_young_persons),
        'antaldagar': str(nr_days),  # Should be total number of days
        'summa': str(bidrag.days * per_diem) + ",00",
        'H1': u'\u2610' if h1_end <= end else u'X',
        'H2': u'\u2610' if h1_end > end else u'X'
    }

    period_data = generate_sthlm_period_data(today.year, today.month,
                                             today.day)
    data.update(period_data)

    persons_per_page = 25
    nr_pages, rest = divmod(nr_persons, persons_per_page)
    if rest > 0:
        nr_pages += 1
    pages = []
    for page_nr in range(nr_pages):
        page_data = copy.deepcopy(data)
        persons_in_page = persons[page_nr * persons_per_page:(page_nr + 1) *
                                  persons_per_page]
        for i, person in enumerate(persons_in_page):
            nr = i + 1
            page_data['namn%d' % nr] = person.name
            page_data['pa%d' % nr] = person.postal_address
            page_data['ar%d' % nr] = str(person.year)
            if person.days != nr_days:
                page_data['ad%d' % nr] = str(person.days)
        pages.append(page_data)

    document = MailMerge('templates/lagerbidragsmall_sthlm_2021.docx')
    document.merge_pages(pages)

    bytesIO = io.BytesIO()
    document.write(bytesIO)
    resultbytes = bytesIO.getvalue()

    doc_name = "Lagerbidrag_%s_%s_%s.docx" % (bidrag.site, bidrag.dateFrom,
                                              bidrag.dateTo)
    ascii_doc_name = doc_name.encode('ascii', 'ignore')

    response = make_response(resultbytes)
    response.headers[
        'Content-Type'] = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
    response.headers[
        'Content-Disposition'] = 'attachment; filename=' + urllib.quote(
            ascii_doc_name)
    return response
Пример #28
0
from mailmerge import MailMerge
from datetime import date

template = "./template/word1_temp.docx"
template_rec = "./template/word1_rec_temp.docx"
# document = MailMerge(template)
document_Multi = MailMerge(template)
# print(document.get_merge_fields())

myDict = {22222: "222244444", 33333: "333366666"}
myList = []
for key in myDict:
    document = MailMerge(template)
    document.merge(cust_id=str(key), cust_name=myDict[key])
    myList.append({"cust_id": str(key), "cust_name": myDict[key]})
    document.write('./word/' + myDict[key] + '.docx')
# for key in myDict:
document_Multi.merge_pages(myList)
document_Multi.write('./word/combined.docx')

document_rec = MailMerge(template_rec)
document_rec.merge_rows('cust_id', myList)
document_rec.write('./word/combined_rec.docx')

document_test = MailMerge('./template/word1_test.docx')
print(document_test.get_merge_fields())
Пример #29
0
    'status': 'Bronze',
    'city': 'Franklin',
    'phone_number': '800-555-5511',
    'Business': 'Tango Tops',
    'zip': '55511',
    'purchases': '$100,000',
    'shipping_limit': '$2500',
    'state': 'KY',
    'address': '1234 Adams St',
    'date': '{:%d-%b-%Y}'.format(date.today()),
    'discount': '2%',
    'recipient': 'Mr. Lincoln'
}

document_2 = MailMerge(template_1)
document_2.merge_pages([cust_1, cust_2, cust_3])
document_2.write('example2.docx')

# Final Example includes a table with the sales history

sales_history = [{
    'prod_desc': 'Red Shoes',
    'price': '$10.00',
    'quantity': '2500',
    'total_purchases': '$25,000.00'
}, {
    'prod_desc': 'Green Shirt',
    'price': '$20.00',
    'quantity': '10000',
    'total_purchases': '$200,000.00'
}, {
def create_folder(df):
    df_1 = df[['Provider_Fax', 'Organization_Name']]
    df_1 = df_1.drop_duplicates()
    templatename = 'D:Patient Reques.docx'
    main_path = 'D:'

    for index, row in df_1.iterrows():

        # prepare the folder name
        full_folder_path = main_path + str(
            row['Organization_Name']) + '_' + str(row['Provider_Fax'])

        #create the folder
        os.mkdir(full_folder_path)

        #Copy the provider letter to folders
        #shutil.copy(provider_letter_file, full_folder_path)

        #create the excel file inside the folder
        df_2 = df.loc[(df['Provider_Fax'] == row['Provider_Fax'])
                      & (df['Organization_Name'] == row['Organization_Name'])]
        df_2 = df_2.applymap(str)
        excel_folderpath = full_folder_path + '/' + str(
            row['Organization_Name']) + '_' + str(
                row['Provider_Fax']) + '.xlsx'
        writer = pd.ExcelWriter(excel_folderpath)
        df_2.to_excel(writer, index=False)
        writer.save()

        #look for template file Prepare the MailMerge File
        document = MailMerge(templatename)
        src = excel_folderpath
        book = xlrd.open_workbook(src)
        work_sheet = book.sheet_by_index(0)
        finalList = []
        headers = []
        num_rows = work_sheet.nrows
        current_row = 0
        while current_row < num_rows:
            dictVal = dict()
            if (current_row == 0):
                for col in range(work_sheet.ncols):
                    headers.append(work_sheet.cell_value(current_row, col))
            else:
                for col in range(work_sheet.ncols):
                    dictVal.update({
                        headers[col]:
                        work_sheet.cell_value(current_row, col)
                    })
            if (current_row != 0):
                finalList.append(dictVal)
            current_row += 1
        document.merge_pages(finalList)
        document.write(full_folder_path + '/' + str(row['Organization_Name']) +
                       '_' + str(row['Provider_Fax']) + '.docx')

        in_file = os.path.abspath(full_folder_path + '/' +
                                  str(row['Organization_Name']) + '_' +
                                  str(row['Provider_Fax']) + '.docx')
        out_file = os.path.abspath('D:' + str(row['Organization_Name']) + '_' +
                                   str(row['Provider_Fax']) + '.pdf')
        create_pdf(in_file, out_file)