用 Python 自动生成 Word 文档并在指定位置插入图片

您所在的位置:网站首页 如何将word文档中的表格转为柱状图模式 用 Python 自动生成 Word 文档并在指定位置插入图片

用 Python 自动生成 Word 文档并在指定位置插入图片

2023-11-27 03:26| 来源: 网络整理| 查看: 265

用Python生成Word文档 在指定位置插入图片 首先当然需要第三方库啦(▽) 天才第一步,第三方的库O(∩_∩)O哈哈~

参照转发的是这位大佬的博客:https://blog.csdn.net/cloveses/article/details/81668797 受益匪浅,感谢感谢(o)/~ 使用以下命令安装:

pip install python-docx 那么重点来了:

使用该库的基本步骤为: 1.建立一个文档对象 2.设置文档的格式(默认字体,页面边距等) 3.在文档对象中加入段落文本,表格,图像等,并指定其样式 4.保存文档 注:本库仅支持生成Word2007以后版本的文档类型,即扩展名为.docx(ps:我用的WPS和word2019亲测也是阔以滴)

第一部分: from docx import Document doc = Document() #以默认模板建立文档对象 doc = Document('a.docx') # 读取a.docx文档,建立文档对象 第二部分: from docx.shared import Inches,Pt def chg_font(obj,fontname='微软雅黑',size=None): ## 设置字体函数 obj.font.name = fontname obj._element.rPr.rFonts.set(qn('w:eastAsia'),fontname) if size and isinstance(size,Pt): obj.font.size = size distance = Inches(0.3) sec = doc.sections[0] # sections对应文档中的“节” sec.left_margin = distance # 以下依次设置左、右、上、下页面边距 sec.right_margin = distance sec.top_margin = distance sec.bottom_margin = distance sec.page_width =Inches(12) #设置页面宽度 sec.page_height = Inches(20) #设置页面高度 ##设置默认字体 chg_font(doc.styles['Normal'],fontname='宋体') 第三部分:

3.1添加段落文本

paragraph =doc.add_paragraph('text....') ph_format =paragraph.paragraph_format ph_format.space_before =Pt(10) #设置段前间距 ph_format.space_after =Pt(12) #设置段后间距 ph_format.line_spacing=Pt(19) #设置行间距

如果希望同一段落中的文本格式不同,就需要使用run对象(阔以理解为单独设置格式的段落内对象) 例如:

run = paragraph.add_run('text...') run.bold = True #设置字体为粗体 chg_font(run,fontname='微软雅黑', size=Pt(12)) #设置字体和字号

3.2添加表格,并写入相关内容

tab =doc.add_table(rows=4,cols=4) #添加一个4行4列的空表 cell=tab.cell(1,3) #获取某单元格对象(从0开始索引)

在单元格中添加文本: cell.text=‘abc’ 在单元格中添加多行文本:(指定转行)

ph =cell.paragraphs[0] run=ph.add_run(‘text....’)' run.add_break() # 添加一个折行 run.add_picture('a.png') # 插入图像,可以是内存中的图像,width=Inches(1.0)指定宽度。

3.3在文档中添加图像:

doc.add_picture('a.png')

步骤四:

doc.save('a.docx') #保存图像

做了一个简单的测试,生成word文档的速度还是比较快的,插入的图片也是可以确定具体的图片插入位置,but 我现在还不太确定具体图片位置定位是怎样插入到指定位置的(尴尬 ̄□ ̄||哈哈) 现在还在研究之中 不过程序是直接运行出来了,看见运行出来的结果我也是一脸懵逼O(∩_∩)O哈哈~ 运行结果如下: 插入前: 插入前报告长这样 插入后: 插入后图片长这样o((⊙﹏⊙))o懵逼.png 完整代码示例:

from docx import Document doc = Document() # 以默认模板建立文档对象 doc = Document('a.docx') # 读取a.docx文档,建立文档对象 from docx.shared import Inches, Pt from docx.oxml.ns import qn def chg_font(obj, fontname='微软雅黑', size=None): ## 设置字体函数 obj.font.name = fontname obj._element.rPr.rFonts.set(qn('w:eastAsia'), fontname) if size and isinstance(size, Pt): obj.font.size = size distance = Inches(0.3) sec = doc.sections[0] # sections对应文档中的“节” sec.left_margin = distance # 以下依次设置左、右、上、下页面边距 sec.right_margin = distance sec.top_margin = distance sec.bottom_margin = distance sec.page_width = Inches(12) # 设置页面宽度 sec.page_height = Inches(20) # 设置页面高度 ##设置默认字体 chg_font(doc.styles['Normal'], fontname='宋体') ##步骤三: ##1.添加段落文本 paragraph = doc.add_paragraph('text....') ph_format = paragraph.paragraph_format ph_format.space_before = Pt(10) # 设置段前间距 ph_format.space_after = Pt(12) # 设置段后间距 ph_format.line_spacing = Pt(19) # 设置行间距 ##2.添加表格,并写入相关内容 tab = doc.add_table(rows=4, cols=4) # 添加一个4行4列的空表 cell = tab.cell(1, 3) # 获取某单元格对象(从0开始索引) ##在单元格中添加文本: ##在单元格中添加多行文本(指定转行) ph = cell.paragraphs[0] run = ph.add_run('text....') run.add_break() # 添加一个折行 run.add_picture('a.png') # 插入图像,可以是内存中的图像,width=Inches(1.0)指定宽度。 ##3.在文档中添加图像; doc.add_picture("a.png") ##步骤四: doc.save('a.docx') #保存图像


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3