Python操作Word一括生成契約の実施例
背景:約3 Kのメーカーが情報を再確認して契約を結ぶ必要があります。契約書は統一されたWord版です。各サプライヤーは契約内の金額部分を修正する必要があります。人工的に処理するには、複製ごとに貼り付けられ、金額は大文字の金額を生成する必要があります。重複作業に基づいてサボることができます。Pythonで救出してください。
一:関連のカバンを導入します。これは言いません。
二:数字の金額が大文字になる金額。このネット上にある既製の関数は自分で書かなくてもいいです。Copyテストしてください。OKです。
自分のデータを用意します。
指定された位置の内容を交替したいですが、作業が難しいことが分かりました。それでは拡大して、直接に段落を交替します。formatを使って、必要な内容を直接記入します。そしてdocxで中を包んでください。clear【クリア段落】にadd_を入れます。run【段落を追加する】方式で、フォントサイズとフォントサイズを調整します。最後にsaveはOJBKです。
ここでPython操作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【段落を追加する】方式で、フォントサイズとフォントサイズを調整します。最後にsaveはOJBKです。
ここでPython操作Wordの量産契約の実施例についての記事を紹介します。Pythonの大量交換ワードの内容については、以前の文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。