Python创建word文档,任务要求:小杨在一家公司上班,每天都需要给不同的客户发送word文档,以告知客户每日黄金价格。要求在文档开始处给出banner条,价格日期等用表格表示。最后贴上自己的联系方式。然后在第二页要加入一些广告。代码如下:

  1 '''
2 #python批量创建word文档2,向word文档增加图片和文字
3 #图片在文档的最上方
4 #价格放在表格里
5 #word文档的第二页为广告页面
6 '''
7 #导入所需库
8 from docx import Document #word文档处理库
9 from docx.enum.text import WD_PARAGRAPH_ALIGNMENT #word文档对齐库
10 from docx.shared import Pt #word文档字体库
11 from docx.oxml.ns import qn #word文档中文字符处理库
12 from docx.shared import Inches #word文档图片大小处理库
13 import time
14 #确定时间
15 today = time.strftime("%Y{y}%m{m}%d{d}",time.localtime()).format(y='年', m='月', d='日')
16 #确定价格
17 price = input('请输入今日价格: ')
18 #客户列表
19 customer_list = ['客户1','客户2','客户3','客户4','客户5','客户6','客户7','客户8','客户9','客户10']
20
21 #开始循环客户列表并创建word文档
22 for i in customer_list:
23 #每次循环新建一个文档
24 document = Document()
25 #设置word文档的整体样式
26 document.styles['Normal'].font.name = u"微软雅黑" #设置文档的默认字体
27 document.styles['Normal'].font.size = Pt(14) #设置文档的默认字体大小
28 document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅黑') #设置默认中文字体
29
30 #开始添加图片,并放在文档的最上方,宽度为6inch
31 document.add_picture('D:/banner的路径/banner.jpg', width=Inches(6))
32
33 #添加第一自然段
34 p1 = document.add_paragraph()
35 #设置第一自然段居中
36 p1.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
37 #向第一自然段添加内容
38 run1 = p1.add_run('关于下达%s产品的价格通知' % (today))
39 #设置第一自然段内容的格式
40 run1.font.name = "微软雅黑"
41 run1._element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅黑')
42 run1.font.size = Pt(21)
43 run1.font.bold = True
44 #设置段前段后距离
45 p1.space_after = Pt(5)
46 p1.space_before = Pt(5)
47
48 #添加第二自然段称呼
49 p2 = document.add_paragraph()
50 #设置第二自然段靠左,其实也可以不用设置,默认靠左
51 p2.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT
52 #向第二自然段添加内容
53 run2 = p2.add_run("尊敬的: " + i + "," + "您好!")
54 #设置第二自然段文字大小,文字加粗,和文字字体
55 run2.font.name = '隶书'
56 run2._element.rPr.rFonts.set(qn('w:eastAsia'), u'隶书')
57 run2.font.size = Pt(16)
58 run2.font.bold = True
59
60 #添加第三自然段,word文档的正文内容
61 p3 = document.add_paragraph()
62 #设置第三自然段的格式
63 p3.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT
64 #向第三自然段添加内容
65 run3 = p3.add_run(' 根据公司安排,为提供优质客户服务,我公司将价格通知如下。')
66 #设置第三自然段的文字的字体,字体的大小,字体是否加粗
67 run3.font.name = '仿宋_GB2312'
68 run3._element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋_GB2312')
69 run3.font.bold = True
70 run3.font.size = Pt(16)
71
72 #添加表格来存储日期,价格和备注,三行三咧,并且第一行要合并
73 table = document.add_table(rows=3, cols=3, style='Table Grid') #初始化一个三行三列的表格,样式为word内置样式'Table Grid
74 #合并第一行的所有单元格
75 table.cell(0, 0).merge(table.cell(0, 2)) #将左上角第1行第1列的单元格合并到右下角第1行第3列的单元格进行合并
76 #向表格写入内容
77 table_run1 = table.cell(0, 0).paragraphs[0].add_run('xx产品价格表') #在单元格第一行第一列(合并后的单元格,也可以输入坐标0,1或者0,2)插入段落并加入文字'xx产品价格表'
78 #设置单元格内容的字体样式
79 table_run1.font.name = '隶书'
80 table_run1._element.rPr.rFonts.set(qn('w:eastAsia'),u'隶书')
81 #设置表头居中
82 table.cell(0, 0).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
83 #向其他单元格添加内容
84 table.cell(1, 0).text = '日期' #表格的第2行第1列写入'日期'
85 table.cell(1, 1).text = '价格' #表格的第2行第2列写入'价格'
86 table.cell(1, 2).text = '备注' #表格的第2行第3列写入'备注'
87 table.cell(2, 0).text = today #写入对应的日期值
88 table.cell(2, 1).text = price #写入对应的价格值
89 table.cell(2, 2).text = '这里是备注呀' #写入对应的备注值
90
91 #添加第四自然段来存储联系人信息
92 p4 = document.add_paragraph()
93 #设置靠右对齐
94 p4.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT
95 #向第四自然添加内容
96 run4 = p4.add_run('(联系人:小刘 电话:18888888888)')
97 #设置第四自然段的字体,文字大小和文字加粗
98 run4.font.name = '隶书'
99 run4._element.rPr.rFonts.set(qn('w:eastAsia'),u'隶书')
100 run4.font.bold = True
101 run4.font.size = Pt(12)
102
103 #翻页,即要求里的广告页
104 document.add_page_break() #插入分页符
105 #增加第五自然段
106 p5 = document.add_paragraph()
107 run5 = p5.add_run("此处是广告!此处是广告!此处是广告!此处是广告!此处是广告!此处是广告!此处是广告!")
108 #设置第五自然段文字的字体,文字大小,文字加粗
109 run5.font.name = '宋体'
110 run5._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
111 run5.font.size = Pt(21)
112 run5.font.bold = True
113
114 #保存文档
115 document.save('D:/要保存的路径/2020-11-12-%s-价格通知.docx' % i)

效果截图:

Python批量创建word文档(2)- 加图片和表格的更多相关文章

  1. Python批量创建word文档(1)- 纯文字

    Python创建word文档,任务要求:小杨在一家公司上班,每天都需要给不同的客户发送word文档,以告知客户每日黄金价格.最后贴上自己的联系方式.代码如下: 1 ''' 2 #python根据需求新 ...

  2. java 处理word文档 (含图片,表格内容)

    因为本人长期从事Oa相关项目的开发,所以处理word文档,Pdf,Excel等是在所难免的. 1.需求      处理Excel 能够用jxl        或者poi 2需求     用户在系统上填 ...

  3. 利用Python-docx 读写 Word 文档中的正文、表格、段落、字体等

    前言: 前两篇博客介绍了 Python 的 docx 模块对 Word 文档的写操作,这篇博客将介绍如何用 docx 模块读取已有 Word 文档中的信息. 本篇博客主要内容有: 1.获取文档的章节信 ...

  4. C# 导出word文档及批量导出word文档(1)

         这里用到了两个dll,一个是aspose.word.dll,另外一个是ICSharpCode.SharpZipLib.dll,ICSharpCode.SharpZipLib.dll是用于批量 ...

  5. C# 导出word文档及批量导出word文档(4)

          接下来是批量导出word文档和批量打印word文件,批量导出word文档和批量打印word文件的思路差不多,只是批量打印不用打包压缩文件,而是把所有文件合成一个word,然后通过js来调用 ...

  6. [java,2017-05-04] 创建word文档

    package test; import java.text.SimpleDateFormat; import java.util.Date; import com.aspose.words.Data ...

  7. C#实现通过模板自动创建Word文档的方法

    原文地址:http://www.jb51.net/article/55332.htm   本文实例讲述了C#实现通过模板自动创建Word文档的方法,是非常实用的技巧.分享给大家供大家参考.具体实现方法 ...

  8. 在C#中创建word文档

    在下面文档中  首先引用word组件:Microsoft.Office.Interop.Word 在头文件中写上 using Word = Microsoft.Office.Interop.Word; ...

  9. Java 后台创建word 文档

    ---恢复内容开始--- Java 后台创建 word 文档 自己总结  网上查阅的文档 分享POI 教程地址:http://www.tuicool.com/articles/emqaEf6 方式一. ...

随机推荐

  1. 惠州发布5G任务计划表,将出台智慧灯杆建设计划与技术规范

    广东省惠州市于近日发布<惠州市贯彻落实广东省加快5G产业发展行动计划(2019-2022年)工作任务计划表>(以下简称:<5G任务计划表>). <5G任务计划表>明 ...

  2. Pytest系列(十三)- 重复执行之pytest-repeat的使用

    写在前面 这个插件,可以帮助我们很好的解决自动化测试过程中的一些偶线性bug难以复现的问题,但前提是,当前自动化脚本是独立的,不依赖任何其他脚本.个人觉得还是失败重运行的一种体现,就和TestNG是一 ...

  3. 渗透入门rop

    原文链接:https://blog.csdn.net/guiguzi1110/article/details/77663430?locationNum=1&fps=1 基本ROP 随着NX保护 ...

  4. 基于java实现的简单网页日历功能,有兴趣得可以把它转换到前端实现

    之前做项目的时候,因为要用到不同日期显示不同的内容,就自己做了一个日期的显示和选择功能,今天抽空把以前的代码理了一下,顺便就把之前做的日期功能给拿出来回顾一下,大家可以提点意见,帮忙完善下设计.先上一 ...

  5. PyQt(Python+Qt)学习随笔:QTableWidgetItem项操作相关的flags、isSelected、checkState方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTableWidget中项操作相关的属性包括是否可用.是否可选中.是否可编辑.是否可复选.是否选中 ...

  6. ATT&CK 实战 - 红日安全 vulnstack (一) 靶机渗透

    关于部署:https://www.cnblogs.com/Cl0ud/p/13688649.html PS:好菜,后来发现内网主机还是PING不通VM1,索性三台主机全部配成NAT模式,按照WEB靶机 ...

  7. 【题解】P6329 【模板】点分树 | 震波

    题外话 (其实模板题没必要在这里水题解的--主要是想说这个qwq) 小常数的快乐.jpg 我也不知道我为啥常数特别小跑得飞快--不加快读就能在 luogu 的最优解上跑到 rank5 ( 说不定深夜提 ...

  8. 【题解】「SP867」 CUBES - Perfect Cubes

    这道题明显是一道暴力. 暴力枚举每一个 \(a, b, c, d\) 所以我就写了一个暴力.每个 \(a, b, c, d\) 都从 \(1\) 枚举到 \(100\) #include<ios ...

  9. AcWing 398. 交通实时查询系统

    大型补档计划 题目链接 只有割点是必行点. 在任意一个点双中,都有分叉没有点交集的两条路径. 所以 v-DCC 缩点. 但是他问的是路径走到另一条路径的必行点.我蒙蔽了,发现自己对无向图双联通分量理解 ...

  10. Codeforces Edu Round 53 A-D

    A. Diverse Substring 找普遍性(特殊解即可). 最简单的便是存在一个区间\([i, i + 1] (1 <= i < n)\),且$str[i] $ $ != str[ ...