def func_word():
from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.shared import Pt #磅数
from docx.oxml.ns import qn #中文
from docx.shared import Inches #图片尺寸
import time
today=time.strftime("%Y%m%d",time.localtime())
print(today)
today=time.strftime("%Y{y}%m{m}%d{d}",time.localtime()).format(y='年',m='月',d='日')
print(today)
price=33#input()
company_list = ['client1', 'client2', 'client3']
for i in company_list:
#零、创建文档,设置西文字体,设置中文字体
document=Document()
document.styles['Normal'].font.name=u'宋体'
document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'),u'宋体')
#一、创建页眉
document.add_picture('pic.jpg',width=Inches(1))
#二、创建标题段落,居中,段前行距5磅,段后行距5磅
p1=document.add_paragraph()
p1.alignment=WD_ALIGN_PARAGRAPH.CENTER
p1.space_after=Pt(5)
p1.space_before=Pt(5)
#二(续)、创建段落里面的文字,设置西文字体,设置中文字体,字号,加粗
run1 = p1.add_run('关于下达%s产品价格的通知' % (today))
run1.font.name='微软雅黑'
run1._element.rPr.rFonts.set(qn('w:eastAsia'),u'微软雅黑')
run1.font.size=Pt(21)
run1.font.bold=True
#三、创建正文两段段落
p2=document.add_paragraph()
run2=p2.add_run(i + ': ')
run2.font.name='仿宋_GB2312'
run2.element.rPr.rFonts.set(qn('w:eastAsia'),u'仿宋_GB2312')
run2.font.size=Pt(16)
run2.font.bold=True
p3 = document.add_paragraph()
run3 = p3.add_run(' 根据公司安排,为提供优质客户服务,我单位拟定了今日黄金价格为%s元,特此通知。' % price)
run3.font.name = '仿宋_GB2312'
run3.element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋_GB2312')
run3.font.size = Pt(16)
run3.font.bold = True
#四、创建表格
table=document.add_table(rows=3,cols=3,style='Table Grid')
table.cell(0,0).merge(table.cell(0,2))
table_run1=table.cell(0,0).paragraphs[0].add_run('XX产品报价表')
table_run1.font.name=u'隶书'
table_run1.element.rPr.rFonts.set(qn('w:eastAsia'), u'隶书')
table.cell(0,0).paragraphs[0].alignment=WD_ALIGN_PARAGRAPH.CENTER
table.cell(1, 0).text = 'date' #text与run的区别是text不可改样式,只能用默认样式
table.cell(1, 1).text = 'price' #而run的意义是,同一文本框下,也可以有不同样子的文字
table.cell(1, 2).text = 'date'
table.cell(2, 0).text = today
table.cell(2, 1).text = str(price)
table.cell(2, 2).text = ''
#五、创建署名日期段落
p4 = document.add_paragraph()
p4.alignment=WD_ALIGN_PARAGRAPH.CENTER
run4 = p4.add_run('联系人:小杨 电话:88888888')
run4.font.name = '仿宋_GB2312'
run4.element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋_GB2312')
run4.font.size = Pt(16)
run4.font.bold = True
#六、换页
document.add_page_break()
p5=document.add_paragraph()
run4=p5.add_run('此处是广告')
#七、保存
document.save('%s-价格通知.docx' % i)
#八、读取文件(如果要修改的话就把print语句换成赋值并保存为新文件即可)
docx=Document('test0.docx')
all_paragraphs=docx.paragraphs
for i,paragraph in enumerate(all_paragraphs):
print(i,paragraph.text)#最后的第6段是表格,text为空
all_talbes=docx.tables
for i,table in enumerate(all_talbes):
for j,row in enumerate(table.rows):
for k,cell in enumerate(row.cells):
print(i,j,k,cell.text)
import zipfile
word=zipfile.ZipFile('test0.docx')
xml=word.read('word/document.xml').decode('utf-8')
xml_list=xml.split('<w:t>')#找左界
text_list=[]
for i in xml_list:
if i.find('</w:t>')+ 1:#找右界,这里+1很巧妙,因为找不到会返回-1,加了一就是0即false
text_list.append(i[:i.find('</w:t>')])
else:
pass
text=''.join(text_list)
print(text)
func_word()