如何基于python把文字图片写入word文档


Posted in Python onJuly 31, 2020

安装代码

pip install python-docx

1.批量化往word文件中添加大批量重复的数据

from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.shared import Pt #磅数
from docx.oxml.ns import qn #中文格式

#以上是docx库中需要用到的部分
import time
price = input('请输入今日价格:')
company_list = ['客户1','客户2','客户3','客户4','客户5','客户6']
today1 = time.strftime("%Y-%m-%d",time.localtime())
today2 = time.strftime("%Y/%m/%d",time.localtime())
today = time.strftime("%Y{y}%m{m}%d{d}",time.localtime()).format(y='年',m='月',d='日')

for i in company_list:
  document = Document()
  #设置文档的基础字体中文
  document.styles['Normal'].font.name = u'宋体'
  #设置文档的基础字体西文
  document.styles['Normal'].element.rPr.rFonts.set(qn('w:eastAsia'),u'宋体')

  # 初始化建立第一个自然段
  pl = document.add_paragraph()
  #对齐方式为居中,没有这句话默认左对齐
  pl.alignment = WD_ALIGN_PARAGRAPH.CENTER
  run1 = pl.add_run('关于下达%s产品价格的通知'%(today))
  run1.font.name = '微软雅黑'
  run1.element.rPr.rFonts.set(qn('w:eastAsia'),u'微软雅黑')
  run1.font.size = Pt(21)
  #是否加粗
  run1.font.bold = True
  #前后距离5磅
  pl.space_before = Pt(5)
  pl.space_after = Pt(5)

  # 初始化建立第二个自然段
  p2 = document.add_paragraph()
  run2 = p2.add_run(i+":")
  #对客户的称呼
  run2.font.name = '仿宋_GB2312'
  run2.element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋_GB2312')
  run2.font.size = Pt(16)
  # 是否加粗
  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)
  # 是否加粗
  run3.font.bold = True

  # 初始化建立第四个自然段
  p4 = document.add_paragraph()
  # 对齐方式为居中,没有这句话默认左对齐
  p4.alignment = WD_ALIGN_PARAGRAPH.CENTER
  run4 = p4.add_run("(   联系人:小杨 电话:18888888888)")
  # 对客户的称呼
  run4.font.name = '仿宋_GB2312'
  run4.element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋_GB2312')
  run4.font.size = Pt(16)
  # 是否加粗
  run4.font.bold = True
  document.save('%s-价格通知.docx'% i)

2.添加图片

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 #图片尺寸

#以上是docx库中需要用到的部分
import time
price = input('请输入今日价格:')
company_list = ['客户1','客户2','客户3','客户4','客户5','客户6']

today = time.strftime("%Y{y}%m{m}%d{d}",time.localtime()).format(y='年',m='月',d='日')

for i in company_list:
  document = Document()
  # 设置文档的基础字体中文
  document.styles['Normal'].font.name = u'宋体'
  # 设置文档的基础样式
  document.styles['Normal'].element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')

  document.add_picture('banner.jpg',width=Inches(6))
  # 初始化建立第一个自然段
  pl = document.add_paragraph()
  # 对齐方式为居中,没有这句话默认左对齐
  pl.alignment = WD_ALIGN_PARAGRAPH.CENTER
  run1 = pl.add_run('关于下达%s产品价格的通知' % (today))
  run1.font.name = '微软雅黑'
  run1.element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅黑')
  run1.font.size = Pt(21)
  # 是否加粗
  run1.font.bold = True
  # 前后距离5磅
  pl.space_before = Pt(5)
  pl.space_after = Pt(5)

  # 初始化建立第二个自然段
  p2 = document.add_paragraph()
  run2 = p2.add_run(i + ":")
  # 对客户的称呼
  run2.font.name = '仿宋_GB2312'
  run2.element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋_GB2312')
  run2.font.size = Pt(16)
  # 是否加粗
  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)
  # 是否加粗
  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产品报价表')
  table_run1.font.name = u'隶书'
  table_run1.element.rPr.rFonts.set(qn('w:eastAsia'),u'隶书')

  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("        (联系人:小杨 电话:18888888888)")
  # 对客户的称呼
  run4.font.name = '仿宋_GB2312'
  run4.element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋_GB2312')
  run4.font.size = Pt(16)
  # 是否加粗
  run4.font.bold = True
  #插入分页符
  document.add_page_break()
  p5 = document.add_paragraph()
  run4 = p5.add_run('此处是广告')
  document.save('%s-价格通知.docx' % i)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python获取mp3文件信息的方法
Jun 15 Python
python自动zip压缩目录的方法
Jun 28 Python
python直接访问私有属性的简单方法
Jul 25 Python
Python sqlite3事务处理方法实例分析
Jun 19 Python
python入门前的第一课 python怎样入门
Mar 06 Python
python 自定义对象的打印方法
Jan 12 Python
一个可以套路别人的python小程序实例代码
Apr 09 Python
解决Python import docx出错DLL load failed的问题
Feb 13 Python
Python如何在循环内使用list.remove()
Jun 01 Python
Python读取ini配置文件传参的简单示例
Jan 05 Python
Python利用FlashText算法实现替换字符串
Mar 31 Python
Python matplotlib安装以及实现简单曲线的绘制
Apr 26 Python
django教程如何自学
Jul 31 #Python
Python实现一个优先级队列的方法
Jul 31 #Python
django表单中的按钮获取数据的实例分析
Jul 31 #Python
pycharm中使用request和Pytest进行接口测试的方法
Jul 31 #Python
django创建css文件夹的具体方法
Jul 31 #Python
Selenium之模拟登录铁路12306的示例代码
Jul 31 #Python
python的flask框架难学吗
Jul 31 #Python
You might like
菜鸟修复电子管记
2021/03/02 无线电
PHP文件锁定写入实例解析
2014/07/14 PHP
PHPUnit + Laravel单元测试常用技能
2019/11/06 PHP
javascript面向对象的方式实现的弹出层效果代码
2010/01/28 Javascript
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
Array栈方法和队列方法的特点说明
2014/01/24 Javascript
使用JS实现jQuery的addClass, removeClass, hasClass函数功能
2014/10/31 Javascript
jQuery带箭头提示框tooltips插件集锦
2014/11/17 Javascript
jquery实现华丽的可折角广告代码
2015/09/02 Javascript
jQuery代码实现表格中点击相应行变色功能
2016/05/09 Javascript
在localStorage中存储对象数组并读取的方法
2016/09/24 Javascript
详解jQuery简单的表格应用
2016/12/16 Javascript
JavaScript编写九九乘法表(两种任选)
2017/02/04 Javascript
Vue过滤器的用法和自定义过滤器使用
2017/02/08 Javascript
VUE 更好的 ajax 上传处理 axios.js实现代码
2017/05/10 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
2018/09/07 jQuery
浅谈element中InfiniteScroll按需引入的一点注意事项
2020/06/05 Javascript
[51:17]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第二场 10月30日
2020/10/31 DOTA
跟老齐学Python之数据类型总结
2014/09/24 Python
浅谈python多线程和队列管理shell程序
2015/08/04 Python
使用python实现生成用户信息
2017/03/20 Python
python如何生成各种随机分布图
2018/08/27 Python
python取数作为临时极大值(极小值)的方法
2018/10/15 Python
Python turtle库绘制菱形的3种方式小结
2019/11/23 Python
使用pandas库对csv文件进行筛选保存
2020/05/25 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
CSS3属性 line-clamp控制文本行数的使用
2020/03/19 HTML / CSS
详解css3使用transform出现字体模糊的解决办法
2020/10/16 HTML / CSS
英国天然有机美容护肤品:Neal’s Yard Remedies
2018/05/05 全球购物
德国运动营养和健身网上商店:Myprotein.de
2018/07/18 全球购物
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
Keds加拿大官网:购买帆布运动鞋和皮鞋
2019/09/26 全球购物
大专生自我鉴定范文
2013/10/01 职场文书
校园公益广告语
2014/03/13 职场文书
三严三实对照检查材料范文
2014/09/23 职场文书
pytorch 如何使用float64训练
2021/05/24 Python