如何基于python把文字图片写入word文档
作者:等风者 发布时间:2021-04-20 06:48:49
标签:python,文字,word,文档
安装代码
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)
来源:https://www.cnblogs.com/sunflying/p/13382950.html


猜你喜欢
- 本文实例讲述了python简单文本处理的方法。分享给大家供大家参考。具体如下:由于有多线程的影响,c++项目打印出来的时间顺序不一致,导致不
- BCP语句的作用:BCP是SQL提供的进行数据传输的实用程序,这种语句提供了非常快的数据导入的方法。(当然7。0也有BCP的替代方法就是DT
- 引用是什么在 PHP 中引用意味着用不同的名字访问同一个变量内容。这并不像 C 的指针,替代的是,引用是符号表别名。注意在 PHP 中,变量
- 每种语言都有自己的独到之处,或奇特的语法,或不常见的函数,或非标准的执行方式。因此,不论新丁还是老手,看着某个特性会突然醉了。文中总结了10
- 大家还记得我们在老版本中,对于线上环境配置中会把所有的 css 多打成一个文件:核心是使用了插件 extract-text-webpack-
- lambda 语法lambda 函数的语法只包含一个语句,表现形式如下:lambda [arg1 [,arg2,.....argn]]:ex
- 结合vue+element-ui+vue-quill+editor二次封装成组件1.图片上传分析原因项目中使用vue-quill-edito
- JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据。说白了就是能
- Python之Web框架Django项目搭建全过程IDE说明:Win7系统Python:3.5Django:1.10Pymysql:0.7.
- 一、字符串方法1.字符串的分割s.split() 默认是按照空格分割s.split(',') 按照逗号分割(返回的是一个列表
- <script language="javascript" src="js/sett
- 最近开发过程中遇到一些小问题(似乎问题总是那么多),但一直没什么时间去优化与解决。程序员不能被业务绑架,有时间还是花点在代码,开始这次的vu
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML&nb
- 前言pandas处理时间的对象有很多,分别表示不同的作用。本次介绍固定时间对象和时间长对象。还是先导入包:import numpy as n
- 关于代码调试的技巧,我之前写过很多的文章,关注比较早的同学,也应该都有看过。还没看过的同学,欢迎前往查阅:更多Python代码调试技巧其中有
- 描述 嵌入在你的web页面中的导航元素能够降低你的搜索引擎评价排名并且降低你的网站的响应性能。本文作者想同你一起探讨如何使用AJAX技术来解
- 前言:由于很多业务表因为历史原因或者性能原因,都使用了违反第一范式的设计模式。即同一个列中存储了多个属性值(具体结构见下表)。这种模式下,应
- 在用jupyter notebook写python代码的过程中会产生很多变量,而关闭后或者restart jupyter kernel后所有
- 1.使用jobsName.ini文件保存要创建job的名字jobs1jobs2jobs32.使用Jenkins创建job时自动生成的conf
- mysql-connector-java.jar包的下载教程:1.首先我们打开mysql的官网:https://www.mysql.com/