精华内容
下载资源
问答
  • 主要介绍了Python操作Word批量生成合同的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 合同是统一的Word版本。每个供应商需要修改合同内的金额部分。人工处理方式需要每个复制粘贴且金额要生成大写金额。基于重复工作可偷懒。用Python解救一下。 #导入对应数据库 import numpy as np import pandas as ...

    背景:大约有3K家商家需要重新确认信息并签订合同。合同是统一的Word版本。每个供应商需要修改合同内的金额部分。人工处理方式需要每个复制粘贴且金额要生成大写金额。基于重复工作可偷懒。用Python解救一下。

    #导入对应数据库
    import numpy as np 
    import pandas as pd 
    import os 
    import docx
    from docx.shared import Pt
    from docx.oxml.ns import qn
    #修改项目文件地址
    os.chdir(r'C:\Users\WIN7\Desktop\分期账单自动化')
    os.getcwd()
    
    '''
    人民币数字转大写汉字
    '''
    # coding: utf-8
    import warnings
    from decimal import Decimal
    
    def cncurrency(value, capital=True, prefix=False, classical=None):
        '''
        参数:
        capital:    True   大写汉字金额
                    False  一般汉字金额
        classical:  True   元
                    False  圆
        prefix:     True   以'人民币'开头
                    False, 无开头
        '''
        if not isinstance(value, (Decimal, str, int)):
            msg = '''
            由于浮点数精度问题,请考虑使用字符串,或者 decimal.Decimal 类。
            因使用浮点数造成误差而带来的可能风险和损失作者概不负责。
            '''
            warnings.warn(msg, UserWarning)
        # 默认大写金额用圆,一般汉字金额用元
        if classical is None:
            classical = True if capital else False
            
        # 汉字金额前缀
        if prefix is True:
            prefix = '人民币'
        else:
            prefix = ''
            
        # 汉字金额字符定义
        dunit = ('角', '分')
        if capital:
            num = ('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖')
            iunit = [None, '拾', '佰', '仟', '万', '拾', '佰', '仟','亿', '拾', '佰', '仟', '万', '拾', '佰', '仟']
        else:
            num = ('〇', '一', '二', '三', '四', '五', '六', '七', '八', '九')
            iunit = [None, '十', '百', '千', '万', '十', '百', '千','亿', '十', '百', '千', '万', '十', '百', '千']
        if classical:
            iunit[0] = '元' if classical else '圆'
        # 转换为Decimal,并截断多余小数
    
        if not isinstance(value, Decimal):
            value = Decimal(value).quantize(Decimal('0.01'))
    
        # 处理负数
        if value < 0:
            prefix += '负'          # 输出前缀,加负
            value = - value         # 取正数部分,无须过多考虑正负数舍入
                                    # assert - value + value == 0
        # 转化为字符串
        s = str(value)
        if len(s) > 19:
            raise ValueError('金额太大了,不知道该怎么表达。')
        istr, dstr = s.split('.')           # 小数部分和整数部分分别处理
        istr = istr[::-1]                   # 翻转整数部分字符串
        so = []     # 用于记录转换结果
        
        # 零
        if value == 0:
            return prefix + num[0] + iunit[0]
        haszero = False     # 用于标记零的使用
        if dstr == '00':
            haszero = True  # 如果无小数部分,则标记加过零,避免出现“圆零整”
            
        # 处理小数部分
        # 分
        if dstr[1] != '0':
            so.append(dunit[1])
            so.append(num[int(dstr[1])])
        else:
            so.append('整')         # 无分,则加“整”
        # 角
        if dstr[0] != '0':
            so.append(dunit[0])
            so.append(num[int(dstr[0])])
        elif dstr[1] != '0':
            so.append(num[0])       # 无角有分,添加“零”
            haszero = True          # 标记加过零了
            
        # 无整数部分
        if istr == '0':
            if haszero:             # 既然无整数部分,那么去掉角位置上的零
                so.pop()
            so.append(prefix)       # 加前缀
            so.reverse()            # 翻转
            return ''.join(so)
    
        # 处理整数部分
        for i, n in enumerate(istr):
            n = int(n)
            if i % 4 == 0:          # 在圆、万、亿等位上,即使是零,也必须有单位
                if i == 8 and so[-1] == iunit[4]:   # 亿和万之间全部为零的情况
                    so.pop()                        # 去掉万
                so.append(iunit[i])
                if n == 0:                          # 处理这些位上为零的情况
                    if not haszero:                 # 如果以前没有加过零
                        so.insert(-1, num[0])       # 则在单位后面加零
                        haszero = True              # 标记加过零了
                else:                               # 处理不为零的情况
                    so.append(num[n])
                    haszero = False                 # 重新开始标记加零的情况
            else:                                   # 在其他位置上
                if n != 0:                          # 不为零的情况
                    so.append(iunit[i])
                    so.append(num[n])
                    haszero = False                 # 重新开始标记加零的情况
                else:                               # 处理为零的情况
                    if not haszero:                 # 如果以前没有加过零
                        so.append(num[0])
                        haszero = True
    
        # 最终结果
        so.append(prefix)
        so.reverse()
        return ''.join(so)
    
    
    #数据准备阶段 导入大写
    #读取预备好的EXCEL表格
    text = pd.read_excel('付款预备表.xlsx')
    #print(text)
    text['EC总应付额']
    list1 = []
    for i in text['EC总应付额']:
        list1.append(cncurrency(str(i)))
    text.append(list1)
    text['大写金额'] = list1
    text.shape[0]
    print(text.head())
    
    
    
    
    document12 = docx.Document('分期SPM模板(12期).docx')
    document24 = docx.Document('分期SPM模板(24期).docx')
    supp_num = 0 
    for supp_num in  range(text.shape[0]):
        paragraph_num = 0
        A = text.iat[supp_num,2]
        B = text.iat[supp_num,5]
        qishu = text.iat[supp_num,3]
        supp_name = text.iat[supp_num,1]
        user_name = text.iat[supp_num,4]
        content = "双方确认,截止至  2020  年 3  月 31 日,扣除原合同和原合作约定到货异常(包括但不仅限于缺货、少货、货损、到货不符)、违约责任、赔偿责任、甲方代乙方垫付等所涉相关费用后,甲方尚欠付乙方货款金额合计人民币{}元(大写:{})。".format(A,B)
        if qishu == "12期":
            p = document12.paragraphs[8].clear()
            run1 = p.add_run(content)
            run1.font.size = Pt(12)
            run1.font.name = '仿宋'
            run1.element.rPr.rFonts.set(qn('w:eastAsia'), '仿宋')
            document12.save("{}.docx".format(supp_name))
        else:
            p = document24.paragraphs[8].clear()
            run1 = p.add_run(content)
            run1.font.size = Pt(12)
            run1.font.name = '仿宋'
            run1.element.rPr.rFonts.set(qn('w:eastAsia'), '仿宋')
            document24.save("{}.docx".format(supp_name))
    

    主要是分成四个板块。
    一:导入相关的包,这个就不说了
    二:数字金额转大写金额。这个网上一大堆的现成的函数,也就不用自己写,Copy测试一下,OK的。
    三:预备自己的数据。
    四:本来想替换指定位置的内容的,但是发现操作相对有点困难,那就思维放大,直接替换整个段落。用个format,把需要替换的内容直接填入。然后用docx包里面的.clear【清除段落】 加 add_run【添加段落】的方式,配合上.font.size 和.font.name 调整字体大小与字体。最后save就OJBK了。

    我的学习一般都是以解决实际问题为目的。快速解决问题。

    展开全文
  • 合同是统一的Word版本。每个供应商需要修改合同内的金额部分。人工处理方式需要每个复制粘贴且金额要生成大写金额。基于重复工作可偷懒。用Python解救一下。 #导入对应数据库 import numpy as np import pandas as...
     

    更多教程请到:菜鸟教程 https://www.piaodoo.com/

    背景:大约有3K家商家需要重新确认信息并签订合同。合同是统一的Word版本。每个供应商需要修改合同内的金额部分。人工处理方式需要每个复制粘贴且金额要生成大写金额。基于重复工作可偷懒。用Python解救一下。

    #导入对应数据库
    import numpy as np 
    import pandas as pd 
    import os 
    import docx
    from docx.shared import Pt
    from docx.oxml.ns import qn
    #修改项目文件地址
    os.chdir(r'C:\Users\WIN7\Desktop\分期账单自动化')
    os.getcwd()
    
    '''
    人民币数字转大写汉字
    '''
    # coding: utf-8
    import warnings
    from decimal import Decimal
    

    def cncurrency(value, capital=True, prefix=False, classical=None):
    ‘’’
    参数:
    capital: True 大写汉字金额
    False 一般汉字金额
    classical: True 元
    False 圆
    prefix: True 以’人民币’开头
    False, 无开头
    ‘’’
    if not isinstance(value, (Decimal, str, int)):
    msg = ‘’’
    由于浮点数精度问题,请考虑使用字符串,或者 decimal.Decimal 类。
    因使用浮点数造成误差而带来的可能风险和损失作者概不负责。
    ‘’’
    warnings.warn(msg, UserWarning)

    默认大写金额用圆,一般汉字金额用元

    if classical is None:
    classical = True if capital else False

    汉字金额前缀

    if prefix is True:
    prefix = ‘人民币’
    else:
    prefix = ‘’

    汉字金额字符定义

    dunit = (‘角’, ‘分’)
    if capital:
    num = (‘零’, ‘壹’, ‘贰’, ‘叁’, ‘肆’, ‘伍’, ‘陆’, ‘柒’, ‘捌’, ‘玖’)
    iunit = [None, ‘拾’, ‘佰’, ‘仟’, ‘万’, ‘拾’, ‘佰’, ‘仟’,‘亿’, ‘拾’, ‘佰’, ‘仟’, ‘万’, ‘拾’, ‘佰’, ‘仟’]
    else:
    num = (‘〇’, ‘一’, ‘二’, ‘三’, ‘四’, ‘五’, ‘六’, ‘七’, ‘八’, ‘九’)
    iunit = [None, ‘十’, ‘百’, ‘千’, ‘万’, ‘十’, ‘百’, ‘千’,‘亿’, ‘十’, ‘百’, ‘千’, ‘万’, ‘十’, ‘百’, ‘千’]
    if classical:
    iunit[0] = ‘元’ if classical else ‘圆’

    转换为Decimal,并截断多余小数

    if not isinstance(value, Decimal):
    value = Decimal(value).quantize(Decimal(‘0.01’))

    处理负数

    if value < 0:
    prefix += ‘负’ # 输出前缀,加负
    value = - value # 取正数部分,无须过多考虑正负数舍入
    # assert - value + value == 0

    转化为字符串

    s = str(value)
    if len(s) > 19:
    raise ValueError(‘金额太大了,不知道该怎么表达。’)
    istr, dstr = s.split(’.’) # 小数部分和整数部分分别处理
    istr = istr[::-1] # 翻转整数部分字符串
    so = [] # 用于记录转换结果

    if value == 0:
    return prefix + num[0] + iunit[0]
    haszero = False # 用于标记零的使用
    if dstr == ‘00’:
    haszero = True # 如果无小数部分,则标记加过零,避免出现“圆零整”

    处理小数部分

    if dstr[1] != ‘0’:
    so.append(dunit[1])
    so.append(num[int(dstr[1])])
    else:
    so.append(‘整’) # 无分,则加“整”

    if dstr[0] != ‘0’:
    so.append(dunit[0])
    so.append(num[int(dstr[0])])
    elif dstr[1] != ‘0’:
    so.append(num[0]) # 无角有分,添加“零”
    haszero = True # 标记加过零了

    无整数部分

    if istr == ‘0’:
    if haszero: # 既然无整数部分,那么去掉角位置上的零
    so.pop()
    so.append(prefix) # 加前缀
    so.reverse() # 翻转
    return ‘’.join(so)

    处理整数部分

    for i, n in enumerate(istr):
    n = int(n)
    if i % 4 == 0: # 在圆、万、亿等位上,即使是零,也必须有单位
    if i == 8 and so[-1] == iunit[4]: # 亿和万之间全部为零的情况
    so.pop() # 去掉万
    so.append(iunit[i])
    if n == 0: # 处理这些位上为零的情况
    if not haszero: # 如果以前没有加过零
    so.insert(-1, num[0]) # 则在单位后面加零
    haszero = True # 标记加过零了
    else: # 处理不为零的情况
    so.append(num[n])
    haszero = False # 重新开始标记加零的情况
    else: # 在其他位置上
    if n != 0: # 不为零的情况
    so.append(iunit[i])
    so.append(num[n])
    haszero = False # 重新开始标记加零的情况
    else: # 处理为零的情况
    if not haszero: # 如果以前没有加过零
    so.append(num[0])
    haszero = True

    最终结果

    so.append(prefix)
    so.reverse()
    return ‘’.join(so)

    #数据准备阶段 导入大写
    #读取预备好的EXCEL表格
    text = pd.read_excel('付款预备表.xlsx')
    #print(text)
    text['EC总应付额']
    list1 = []
    for i in text['EC总应付额']:
      list1.append(cncurrency(str(i)))
    text.append(list1)
    text['大写金额'] = list1
    text.shape[0]
    print(text.head())
    
    document12 = docx.Document('分期SPM模板(12期).docx')
    document24 = docx.Document('分期SPM模板(24期).docx')
    supp_num = 0 
    for supp_num in range(text.shape[0]):
      paragraph_num = 0
      A = text.iat[supp_num,2]
      B = text.iat[supp_num,5]
      qishu = text.iat[supp_num,3]
      supp_name = text.iat[supp_num,1]
      user_name = text.iat[supp_num,4]
      content = "双方确认,截止至 2020 年 3 月 31 日,扣除原合同和原合作约定到货异常(包括但不仅限于缺货、少货、货损、到货不符)、违约责任、赔偿责任、甲方代乙方垫付等所涉相关费用后,甲方尚欠付乙方货款金额合计人民币{}元(大写:{})。".format(A,B)
      if qishu == "12期":
        p = document12.paragraphs[8].clear()
        run1 = p.add_run(content)
        run1.font.size = Pt(12)
        run1.font.name = '仿宋'
        run1.element.rPr.rFonts.set(qn('w:eastAsia'), '仿宋')
        document12.save("{}.docx".format(supp_name))
      else:
        p = document24.paragraphs[8].clear()
        run1 = p.add_run(content)
        run1.font.size = Pt(12)
        run1.font.name = '仿宋'
        run1.element.rPr.rFonts.set(qn('w:eastAsia'), '仿宋')
        document24.save("{}.docx".format(supp_name))
    

    主要是分成四个板块。
     一:导入相关的包,这个就不说了
     二:数字金额转大写金额。这个网上一大堆的现成的函数,也就不用自己写,Copy测试一下,OK的。
     三:预备自己的数据。
     四:本来想替换指定位置的内容的,但是发现操作相对有点困难,那就思维放大,直接替换整个段落。用个format,把需要替换的内容直接填入。然后用docx包里面的.clear【清除段落】 加 add_run【添加段落】的方式,配合上.font.size 和.font.name 调整字体大小与字体。最后save就OJBK了。

    到此这篇关于Python操作Word批量生成合同的实现示例的文章就介绍到这了,更多相关Python批量替换word内容请搜索菜鸟教程www.piaodoo.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持菜鸟教程www.piaodoo.com!

    展开全文
  • 批量合同生成,word批量生成,只需要把数据放入excel,设置好合同就可以使用了,模板,excel都在压缩包里了
  • 摘要:VB源码,报表打印,批量生成报表 VB源码:VisualBasic6.0利用VB+WORD 模板批量生成合同信息,将数据库的信息和WORD相结合。 可以根据自己的实际需要进行更改并生成合同,此为一个小小的管理程序。正在编写管理...
  • 批量生成合同

    2021-02-10 15:17:39
    在工作中,可能需要做很多不复杂的合同,即修改合同中的...生成Word文档版本合同 from docx import Document from docx.enum.text import WD_PARAGRAPH_ALIGNMENT from docx.oxml.ns import qn from docx.shared im.

    在工作中,可能需要做很多不复杂的合同,即修改合同中的多个合同元素,但是必须逐个打开合同以查找更改。 当合同太多或手头上有其他事物纠缠时,可能会不小心漏掉,忘记填写和修改。在这里可以用python一键解决你的困扰。大大提高工作效率。

    生成Word文档版本合同 

    from docx import Document
    from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
    from docx.oxml.ns import qn
    from docx.shared import Pt,Inches
    
    #1.创建一个文档
    document=Document()
    style=document.styles['Normal']
    style.font.name='宋体'
    style.element.rPr.rFonts.set(qn('w:eastAsia'),'宋体')
    
    #2.创建段落
    #标题段落
    title=document.add_paragraph('汽车贷款合同')
    title.alignment=WD_PARAGRAPH_ALIGNMENT.CENTER
    title.paragraph_format.space_after=Pt(20)
    title.style.font.size=Pt(14)
    #内容
    content=document.add_paragraph()
    content.paragraph_format.first_line_indent=Pt(20)
    partA=content.add_run('itcast01')   #占位符 甲方
    content.add_run('(甲方)于')
    sign_date=content.add_run('itcast02') #占位符 时间
    content.add_run('与')
    partB=content.add_run('itcast03')    #占位符 乙方
    content.add_run('(乙方)签订汽车贷款合同。乙方需要在')
    day=content.add_run('itcast04')     #占位符 支付时间
    content.add_run('天内向甲方支付人民币')
    total_money=content.add_run('itcast05') #占位符 贷款金额
    content.add_run('元来支持甲方购买汽车。甲方需要分为')
    times=content.add_run('itcast06')       #占位符 分期数
    content.add_run('期来偿还乙方本金。经过友好协商,甲方需要向乙方一次性支付')
    fee=content.add_run('itcast07')         #占位符 服务费
    content.add_run('元作为汽车贷款金融服务费。')
    
    #署名(签字)
    bottom1=document.add_paragraph('甲方:')
    bottom1.alignment=WD_PARAGRAPH_ALIGNMENT.LEFT
    bottom1.paragraph_format.left_indent=Inches(4)
    bottom2=document.add_paragraph('乙方:')
    bottom2.alignment=WD_PARAGRAPH_ALIGNMENT.LEFT
    bottom2.paragraph_format.left_indent=Inches(4)
    bottom3=document.add_paragraph('日期:    年  月  日')
    bottom3.alignment=WD_PARAGRAPH_ALIGNMENT.LEFT
    bottom3.paragraph_format.left_indent=Inches(4)
    #保存文档
    document.save('template.docx')

    生成的合同template.docx

    一键批量生成合同

    from openpyxl import load_workbook
    from docx import Document
    from os import listdir
    '''
    定义替换函数
    '''
    def replace_text(old_text, new_text):
        all_paragraphs = document.paragraphs #读取所有的自然段
        for paragraph in all_paragraphs:
            for run in paragraph.runs: #循环读取所有的run,并进行新旧文本的替换
                run_text = run.text.replace(old_text, new_text)
                run.text = run_text
        all_tables = document.tables #读取所有的表格
        for table in all_tables:
            for row in table.rows:
                for cell in row.cells: #循环读取表格中所有的cells,并进行新旧文本的替换
                    cell_text = cell.text.replace(old_text, new_text)
                    cell.text = cell_text
    '''
    获取Excel和Word的文件
    '''
    for file in listdir():
        if '.xlsx' in file:
            xlsx_name = file
        if '.docx' in file:
            docx_name = file
    '''
    读取Excel内数据
    '''
    wb = load_workbook(xlsx_name)
    sheetx0 = wb.sheetnames
    sheetx = wb[sheetx0[0]]
    
    '''
    循环读取并替换
    '''
    for col in range(2,sheetx.max_column+1): #合同要素Excel中逐列循环
        document = Document(docx_name)
        if sheetx.cell(row=1,column=col).value!=None: #openpyxl在使用sheetx.max_column时可能会读取到空的单元格,这里进行剔除
            for l in range(1,sheetx.max_row+1): #合同要素Excel中逐行循环
                old_text = sheetx.cell(row=l,column=1).value #合同要素Excel中对第一列逐行读取编号
                new_text = sheetx.cell(row=l,column=col).value #合同要素Excel中对循环的当前列逐行读取新要素
                replace_text(str(old_text),str(new_text)) #进行替换
                filename = str(sheetx.cell(row=1,column=col).value) #定义文件名为当前列第一行的内容
            document.save("%s.docx"%(filename)) #按定义的文件名进行保存
    print('合同生成完毕!')

    实现效能:把我们需要生成的数据填写在Excel相应部分,然后将自动生成相对应版本的word合同。

    生成的合同:

    展开全文
  • NewFolder = Wb.Path & "\生成\" For i = LBound(Arr) To UBound(Arr) '########################################## If i > 5 Then GoTo Here '控制输出几份,注释掉则不限制数量 '####################...
    Sub NextSeven_CodeFrame()
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        Application.Calculation = xlCalculationManual
        Application.StatusBar = ">>>>>>>>程序正在运行>>>>>>>>"
    
    
        On Error GoTo ErrHandler
    
        Dim StartTime, UsedTime As Variant
        StartTime = VBA.Timer
        '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    
        Dim Wb As Workbook
        Dim Sht As Worksheet
        Dim oSht As Worksheet
        Dim Rng As Range
        Dim Arr As Variant
        Dim EndRow As Long
        Const HEAD_ROW As Long = 1
        Const SHEET_NAME As String = "明细表"
        Const START_COLUMN As String = "A"
        Const END_COLUMN As String = "I"
    
        Dim Count As Long
    
        '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
        Set Wb = Application.ThisWorkbook
        Set Sht = Wb.Worksheets(SHEET_NAME)
        With Sht
            EndRow = .Cells(.Cells.Rows.Count, 4).End(xlUp).Row
            Set Rng = .Range(.Cells(HEAD_ROW + 1, START_COLUMN), .Cells(EndRow, END_COLUMN))
            Arr = Rng.Value
        End With
    
    
        Dim ModelFolder As String
        Dim FileName As String
        Dim FilePath As String
        Dim NewName As String
        Dim NewFolder As String
        Dim NewPath As String
        '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
        '绑定
        Dim wdApp As Word.Application
        Dim OpenDoc As Word.Document
        Set wdApp = New Word.Application
        '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    
    
        Dim FindText As String
        Dim RepText As String
    
        ModelFolder = Wb.Path & "\模板\"
        NewFolder = Wb.Path & "\生成\"
    
    
      
        For i = LBound(Arr) To UBound(Arr)
            
            '##########################################
            If i > 5 Then GoTo Here   '控制输出几份,注释掉则不限制数量
            '########################################
            '>>>>>>>>>>>>>>>>>诉前财产保全申请书.docx
            FileName = "诉前财产保全申请书.docx"
            FilePath = ModelFolder & FileName
            NewName = i & "-" & Arr(i, 2) & Arr(i, 3) & Arr(i, 4) & "-" & FileName
            NewPath = NewFolder & NewName
            '预先清除文件
            On Error Resume Next
            Kill NewPath
            On Error GoTo 0
            Set OpenDoc = wdApp.Documents.Open(FilePath)
            With OpenDoc
    
                '逐个信息替换
                With .Content.Find
                    .ClearFormatting
                    .Replacement.ClearFormatting
                    .Text = "姓名"
                    .Replacement.Text = Arr(i, 2)
                    .Execute Replace:=wdReplaceAll
                End With
    
                With .Content.Find
                    .ClearFormatting
                    .Replacement.ClearFormatting
                    .Text = "身份证"
                    .Replacement.Text = Arr(i, 3)
                    .Execute Replace:=wdReplaceOne
                End With
    
                With .Content.Find
                    .ClearFormatting
                    .Replacement.ClearFormatting
                    .Text = "性别"
                    .Replacement.Text = Arr(i, 4)
                    .Execute Replace:=wdReplaceOne
                End With
    
                With .Content.Find
                    .ClearFormatting
                    .Replacement.ClearFormatting
                    .Text = "出生日期"
                    .Replacement.Text = Arr(i, 5)
                    .Execute Replace:=wdReplaceOne
                End With
    
                With .Content.Find
                    .ClearFormatting
                    .Replacement.ClearFormatting
                    .Text = "机构名称"
                    .Replacement.Text = Arr(i, 9)
                    .Execute Replace:=wdReplaceOne
                End With
    
                With .Content.Find
                    .ClearFormatting
                    .Replacement.ClearFormatting
                    .Text = "账户号"
                    .Replacement.Text = Arr(i, 7)
                    .Execute Replace:=wdReplaceOne
                End With
    
                With .Content.Find
                    .ClearFormatting
                    .Replacement.ClearFormatting
                    .Text = "冻结金额"
                    .Replacement.Text = Arr(i, 8)
                    .Execute Replace:=wdReplaceOne
                End With
    
                With .Content.Find
                    .ClearFormatting
                    .Replacement.ClearFormatting
                    .Text = "合同日期"
                    .Replacement.Text = Arr(i, 6)
                    .Execute Replace:=wdReplaceOne
                End With
    
    
                '>>>>>>>>>>>>>>>>>>>>>>>>>
                .SaveAs NewPath
                .Close True
            End With
    
        Next i
    
    Here:
        wdApp.Quit
    
    
        '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
        UsedTime = VBA.Timer - StartTime
        MsgBox "本次耗时:" & Format(UsedTime, "0.000秒"), vbOKOnly, "Excel Studio"
    
    ErrorExit:
        Set Wb = Nothing
        Set Sht = Nothing
        Set Rng = Nothing
        Set wdApp = Nothing
    
    
        Application.ScreenUpdating = True
        Application.DisplayAlerts = True
        Application.Calculation = xlCalculationAutomatic
        Application.StatusBar = False
        Exit Sub
        '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    ErrHandler:
        If Err.Number <> 0 Then
            MsgBox Err.Description & "!", vbCritical, "Excel Studio"
            'Debug.Print Err.Description
            Err.Clear
            Resume ErrorExit
        End If
    End Sub
    

      

    转载于:https://www.cnblogs.com/nextseven/p/7128204.html

    展开全文
  • 1、制作劳动合同表,要从excel表格中将每个人的数据导入到docx劳动合同中,重复量很大。 2、制作XX方案或XX报告,Word文档布局和格式统一,只是需填充的内容信息来源于Excel。 3、制作通知书,从excel表格中将每个人...
  • 大家好,我是早起。在之前的办公自动化系列文章中,曾经介绍过很多将Excel指定字段提取到Word模版中指定位置的案例????从Excel到Word批量制作合同在上述案例中,都要求有一个现成...
  • 文章目录1、背景首次签合同人员.xlsx模板:简易劳动合同.docx2、python代码问题3、word vba1) 根据模板批量生成文件2) 批量打印文件4、总结:5、PS: 1、背景 行政部的同事每次都要根据excel里面的信息,制作word版的...
  • 今天我们继续分享一个真实的办公自动化需求:如何使Python+Excel+Word批量生成指定格式内容的合同。 主要涉及的知识点有:openpyxl模块的综合运用与Word文档的两种遍历逻辑。 需求描述 你是乙方建筑公司,手上有一份...
  • 万能合同文书在线生成工具是一款很优秀好用的文书单据在线生成工具。万能文书单据在线生成软件功能全面,简单易操作,帮助用户省去免费的操作,轻松在线生成文书单据,...2:单个或批量生成文书 3:支持平台远端处理文
  • 最近在做的项目,要实现自动生成合同,然后想通过vba进行对合同(word版)中的相同的地方进行批量的替换。 于是就通过标签的形式对word文档当中的字段进行替换操作。代码如下: Public Function ...
  • 案例一:将下表的员工数据信息,按照再下一个格式批量排版与打印出来,用于档案存放,使用场景如利用工资表生成工资单进行打印、批量制作格式合同、制作会议水牌等 操作步骤如下: 在Word中,打开选项卡邮件-选择...
  • 工作中需要大量生成导出报表或合同证书文件,原理为使用Excel或Word模板,批量替换标签以达到效果。 设计 由于原类库都属于基础方法,二次封装后具有更简易的使用方式,可直接传入生成的数据集或标签替换集合。 引用...
  • 读取Excel数据,根据Word模板生成格式合同、批量打印(如批量生成邮政详情单)、数据筛选导出列表、智能化统计分析。
  • WordReplaceFromExcel.rar

    2020-07-02 18:24:14
    利用excel中已有的数据,更新word模板,可基于模板批量产生多个需要的文件,常见应用场景:有批量的身份或者权利人信息,需要基于某个word模板批量生成协议或者合同文件等。注:word模板及excel中的变量需要按config...
  • 用Python自动办公,做职场高手(完结)

    万次阅读 热门讨论 2019-08-17 10:15:00
    教程目录: ┣━07.S2 Word自动化处理,...【真实案例】S2-1-3 批量生成50份不同乙方的合同 ┃┣━38.【视频讲解】S2-1-1 用Python套用Word模版,再也不做重复工作 ┃┃┣━【视频讲解】S2-1-1 用Python套用Word模...
  • 教程目录:┣━07.S2 ...【真实案例】S2-1-3 批量生成50份不同乙方的合同┃ ┣━38.【视频讲解】S2-1-1 用Python套用Word模版,再也不做重复工作┃ ┃ ┣━【视频讲解】S2-1-1 用Python套用Word模版,再也不做重复...
  • 教程目录:┣━07.S2 ...【真实案例】S2-1-3 批量生成50份不同乙方的合同┃ ┣━38.【视频讲解】S2-1-1 用Python套用Word模版,再也不做重复工作┃ ┃ ┣━【视频讲解】S2-1-1 用Python套用Word模版,再也不做重复...
  • 教程目录:┣━07.S2 ...【真实案例】S2-1-3 批量生成50份不同乙方的合同┃ ┣━38.【视频讲解】S2-1-1 用Python套用Word模版,再也不做重复工作┃ ┃ ┣━【视频讲解】S2-1-1 用Python套用Word模版,再也不做重复...
  • 教程目录:┣━07.S2 ...【真实案例】S2-1-3 批量生成50份不同乙方的合同┃ ┣━38.【视频讲解】S2-1-1 用Python套用Word模版,再也不做重复工作┃ ┃ ┣━【视频讲解】S2-1-1 用Python套用Word模版,再也不做重复...

空空如也

空空如也

1 2
收藏数 38
精华内容 15
关键字:

word批量生成合同