1.纯文字
只修改word中的某些信息,而其他信息是通用的!并且要生成很多个这样的文档。
以下是python实现的代码:
#导入需要用到的库
from cProfile import run
from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.shared import Pt #磅数
from docx.oxml.ns import qn #中文格式
import time
#开始写word文档
price=input('请输入今日价格:')
user_list=['LiSa','Tom','John','Homony'] #所有用户
today=time.strftime("%Y{y}%m{m}%d{d}",time.localtime()).format(y='年',m='月',d='日')
#格式化日期,不能直接在Y后面写年,会报错,对中文不友好
for i in user_list:
document=Document() #每次新建一个文档
document.styles['Normal'].font.name=u'宋体' #设置基础字体,这个不能少,否则报错
#下面设置中文字体
document.styles['Normal'].element.rPr.rFonts.set(qn('w:eastAsia'),u'宋体')
#第一段:标题
p1=document.add_paragraph() #增加一段
p1.alignment=WD_ALIGN_PARAGRAPH.CENTER #居中对齐
run1=p1.add_run("关于下达%s价格产品的通知" %(today)) #内容
run1.font.name='微软雅黑' #这个不能少,先设置这个属性才能设置中文字体
run1.element.rPr.rFonts.set(qn('w:eastAsia'),u'微软雅黑') #设置中文字体为微软雅黑
run1.font.size=Pt(21) #设置大小为21磅
run1.font.bold=True #加粗
p1.space_after=Pt(5) #段后5磅
p1.space_before=Pt(5)#段前5磅
#第二段
p2=document.add_paragraph() #默认左对齐
run2=p2.add_run(i+': ') #i是用户名字
run2.font.name='仿宋_GB2312'
run2.element.rPr.rFonts.set(qn('w:eastAsia'),u'仿宋_GB2312')
run2.font.size=Pt(16) #设置大小为21磅
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) #设置大小为21磅
run3.font.bold=True #加粗
#第四段
p4=document.add_paragraph() #默认左对齐
p4.alignment=WD_ALIGN_PARAGRAPH.CENTER #居中对齐
run4=p4.add_run("(联系人:LS 电话:12345678910)")
run4.font.name='仿宋_GB2312'
run4.element.rPr.rFonts.set(qn('w:eastAsia'),u'仿宋_GB2312')
run4.font.size=Pt(16) #设置大小为21磅
run4.font.bold=True #加粗
document.save('d:/python_test/word/%s-价格通知.docx' %i) #以客户名命名文档
这是不设置中文字体得到的结果:
中文字体报错:需要在声明字体属性之后单独设置中文字体
例如:run4.element.rPr.rFonts.set(qn('w:eastAsia'),u'仿宋_GB2312')
这是修改后,即都增加了设置中文字体后的结果:
注意:不能只单独设置中文字体,即需要先设置字体名字这个属性,也就是run1.font.name,再进行中文字体设置
2.带图片和表格
#导入需要用到的库
from cProfile import run
from colorama import Style
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
#开始写word文档
price=input('请输入今日价格:')
user_list=['LiSa','Tom','John','Homony'] #所有用户
today=time.strftime("%Y{y}%m{m}%d{d}",time.localtime()).format(y='年',m='月',d='日')
#格式化日期,不能直接在Y后面写年,会报错
for i in user_list:
document=Document() #每次新建一个文档
document.styles['Normal'].font.name=u'宋体' #设置基础字体
#设置中文字体
document.styles['Normal'].element.rPr.rFonts.set(qn('w:eastAsia'),u'宋体')
document.add_picture('d:/python_test/word/1.jpeg',width=Inches(6)) #图片尺寸6
#第一段标题
p1=document.add_paragraph()
p1.alignment=WD_ALIGN_PARAGRAPH.CENTER #居中对齐
run1=p1.add_run("关于下达%s价格产品的通知" %(today)) #内容
run1.font.name='微软雅黑' #这个不能少,先设置这个属性才能设置中文字体
run1.element.rPr.rFonts.set(qn('w:eastAsia'),u'微软雅黑') #设置中文字体为微软雅黑
run1.font.size=Pt(21) #设置大小为21磅
run1.font.bold=True #加粗
p1.space_after=Pt(5) #段后5磅
p1.space_before=Pt(5)#段前5磅
#第二三段和之前一样
p2=document.add_paragraph() #默认左对齐
run2=p2.add_run(i+': ') #i是用户名字
run2.font.name='仿宋_GB2312'
run2.element.rPr.rFonts.set(qn('w:eastAsia'),u'仿宋_GB2312')
run2.font.size=Pt(16) #设置大小为21磅
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) #设置大小为21磅
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产品报价表") #表格标题,cell里面的坐标可以为0,0-0,2任何
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='日期'
table.cell(1,1).text='价格'
table.cell(1,2).text='备注'
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("(联系人:LS 电话:12345678910)")
run4.font.name='仿宋_GB2312'
run4.element.rPr.rFonts.set(qn('w:eastAsia'),u'仿宋_GB2312')
run4.font.size=Pt(16) #设置大小为21磅
run4.font.bold=True #加粗
document.add_page_break() #插入分页符,增加一页
p5=document.add_paragraph()
run5=p5.add_run("广告招商处")
document.save('d:/python_test/word/%s-价格通知.docx' %i) #以客户名命名文档
运行结果如下图所示: