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)

效果截圖:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM