Python批量创建word文档(2)- 加图片和表格

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)

效果截图:

原文地址:https://www.cnblogs.com/mafu/p/13966577.html