Python办公自动化学习笔记--Word操作

1.纯文字

只修改word中的某些信息,而其他信息是通用的!并且要生成很多个这样的文档。

#导入需要用到的库
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) #以客户名命名文档

 运行结果如下图所示:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值