如何基于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代码(逐级优化)
May 25 Python
Python笔记(叁)继续学习
Oct 24 Python
Python常用正则表达式符号浅析
Aug 13 Python
Python生成不重复随机值的方法
May 11 Python
python中input()与raw_input()的区别分析
Feb 27 Python
python实现中文转换url编码的方法
Jun 14 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
Feb 21 Python
python3模块smtplib实现发送邮件功能
May 22 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
Dec 19 Python
python使用MQTT给硬件传输图片的实现方法
May 05 Python
python+numpy按行求一个二维数组的最大值方法
Jul 09 Python
对Pytorch 中的contiguous理解说明
Mar 03 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
简单的php写入数据库类代码分享
2011/07/26 PHP
php将字符串全部转换成大写或者小写的方法
2015/03/17 PHP
TP5框架简单登录功能实现方法示例
2019/10/31 PHP
javascript针对DOM的应用分析(三)
2012/04/15 Javascript
js取消单选按钮选中并判断对象是否为空
2013/11/14 Javascript
Window.Open打开窗体和if嵌套代码
2016/04/15 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
Bootstrap3.0建站教程(一)之bootstrap表单元素排版
2016/06/01 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
2016/11/23 Javascript
详解jQuery的表单验证插件--Validation
2016/12/21 Javascript
vue.js 1.x与2.0中js实时监听input值的变化
2017/03/15 Javascript
vue学习教程之带你一步步详细解析vue-cli
2017/12/26 Javascript
select标签设置默认选中的选项方法
2018/03/02 Javascript
angular4强制刷新视图的方法
2018/10/09 Javascript
jQuery 获取除某指定对象外的其他对象 ( :not() 与.not())
2018/10/10 jQuery
[53:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第三场 6.2
2018/06/03 DOTA
[03:12]完美世界DOTA2联赛PWL DAY6集锦
2020/11/05 DOTA
用Python中的__slots__缓存资源以节省内存开销的方法
2015/04/02 Python
Python实现列表转换成字典数据结构的方法
2016/03/11 Python
python解析基于xml格式的日志文件
2017/02/25 Python
Python  unittest单元测试框架的使用
2018/09/08 Python
pygame游戏之旅 游戏中添加显示文字
2018/11/20 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
2019/02/01 Python
python中栈的原理及实现方法示例
2019/11/27 Python
Python使用os.listdir和os.walk获取文件路径
2020/05/21 Python
python安装第三方库如xlrd的方法
2020/10/31 Python
Flask中jinja2的继承实现方法及实例
2021/03/03 Python
JOSEPH官网:英国奢侈时尚品牌
2018/01/31 全球购物
BISSELL官网:北美吸尘器第一品牌
2019/03/14 全球购物
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
2015/10/22 面试题
民生工程实施方案
2014/03/22 职场文书
学生打架检讨书
2014/10/20 职场文书
优秀教师事迹材料
2014/12/15 职场文书
2015年网络管理员工作总结
2015/05/21 职场文书
2015年小学教师培训工作总结
2015/07/21 职场文书
工作简报怎么写
2015/07/21 职场文书