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


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) #以客户名命名文档

运行结果如下图所示:


生成的word文档


内容详情
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容