关于python:用python-修改word中表格数据插入图片-实例分析

9次阅读

共计 2907 个字符,预计需要花费 8 分钟才能阅读完成。

明天学习了对于 word 表格批改数据,插入图片的常识。Word 表格跟对一般的文章段落解决不太一样,上面我就用我学校的请假条表格来带大家一一剖析。

1. 导入 python-docx 库

在 cmd 中导入该库

pip install python-docx

上面是请假条的格局

2. 读取 docx 文件

上面是导入的模块

 from docx import Document
from docx.shared import Inches,Cm,Pt
from docx.oxml.ns import qn
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT// 导入的对于 word 操作的相干模块
import datetime // 获取以后日期

docx = Document('C:/Users/test/Desktop/ 请假条模板.docx')//docx 文件的地址

当初咱们就获取了一个 docx 的对象

3. 获取表格

应用如下形式获取表格

tables = docx.tables// 获取所有表格
table=tables[0]// 获取第一个表格

应用.tables 获取该文档中所有表格,返回一个列表,因为笔者的表格是第一个,所以为 tables[0]。

4. 获取表格的单元

docx 表格也想 excel 一样有行,列的属性,然而不会显示进去,所以却要自已去查找以确定元素的地位。有以下的办法获取你的表格的行列数。

print(len(table.rows))// 获取行的总数
print(len(table.columns))// 获取列的总数

获取完表格的行列数后,就能够对相应的元素操作 这里的行列数返回值为整数,后果如下 上面咱们利用行列数确定元素地位,留神元素行列都是从 0 开始。 选中调用的办法为

指标 = 表.cell(坐标).paragraphs[该单元第几段(从零开始)]

例如咱们要确定下面请假条中班级的地位,咱们看到班级在第一行,故行标为 0,处于列的第一个地位,故列标为 0,故其坐标为.cell(0,0)。其余元素办法也如此。可能有时会呈现抉择的行列不对,能够本人向左右一一尝试,查看地位是否正确。

name =table.cell(0,0).paragraphs[0]

可能大家还对 paragraphs[]的抉择还有一些纳闷,上面我用请假条中的例子为大家解说。

大家能够看到下面的请假条最初一个方格,有一个工夫填写,工夫与其余段落独特处于(2,1)这个地位,他的后面共有三行,所以他处于 paragraphs[3]的地位

write_time=table.cell(2,1).paragraphs[3]

5. 对选中的元素进行增加文字操作

上一步咱们曾经抉择了 name,上面向其中增加元素,用法为

user_name =table.cell(0,0).paragraphs[0].add_run(想要增加的内容)

也能够为增加的内容进行字体设置

user_name.font.name='黑体'// 设置字体品种
user_name.font.size=Pt(15)// 设置字体大小

6. 向表格中插入图片

笔者的学校须要用图片填写销假起因,那么咱们如何用图片填写表格呢,在 docx 文件中插入表格的用法为

docx.add_picture(图片的门路)

同理在表格中插入也是如此,无非是多了一步确定插入的地位,还是以下面的请假条为例,图片应该插入到销假起因的下一行,故地位为

run=table.cell(2,1).paragraphs[1].add_run()// 插入一个文字块 

增加图片操作

picture =run.add_picture(photo_path)
picture.height=Cm(4.4)// 设置图片高度
picture.width=Cm(6.2)// 设置图片宽度

7. 保存文档

办法为

docx.save(门路)

8. 小补充:datetime

笔者只应用了 datetime 库中的获取当初的工夫 装置 datetime 库

pip install datetime

获取当初工夫的办法

import datetime
dt = datetime.datetime.now()

能够应用 dt.year,dt.month,dt.day 别离获取明天的年,月,日

最初残缺代码如下 这里有一个获取图片的小技巧,就是间接拖动图片到要输出的门路上,嘿嘿。

from docx import Document
from docx.shared import Inches,Cm,Pt
from docx.oxml.ns import qn
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
import datetime
dt = datetime.datetime.now()
time = str(dt.year) +'年'+str(dt.month)+'月'+str(dt.day)+'日'
name=str(input('请输出你的姓名:'))
photo_path = str(input('请拖动图片到此:'))
docx = Document('C:/Users/test/Desktop/ 请假条模板.docx')
tables = docx.tables
table=tables[0]
xingming =table.cell(-1,3).paragraphs[0].add_run(name)
xingming.font.name='黑体'
xingming.font.size=Pt(15)
shijian = table.cell(-1,4).paragraphs[0].add_run(time)
shijian.font.name='黑体'
shijian.font.size=Pt(15)
shijian1=table.cell(2,1).paragraphs[3].add_run(time)
shijian1.font.name='黑体'
shijian1.font.size=Pt(15)
run=table.cell(2,1).paragraphs[1].add_run()
picture =run.add_picture(photo_path)
picture.height=Cm(4.4)
picture.width=Cm(6.2)
path='C:/Users/test/Desktop/'+name+''+time+' 请假条  '+'.docx'
docx.save(path)

成果如图 图片能够插入,不不便展现。。。笔者这里的代码没有填写批假人与班级,感兴趣的小伙伴能够本人试着填一下。如果想要请假条模板能够评论通知我,我会发给你。自己初学 python,文章中可能会呈现各种谬误,心愿大佬观看时能够指出,谢谢。

本文转自:https://www.sdk.cn/details/djgylbOGwjlobxAN1Z

SDK 社区是一个中立的社区,这里有多样的前端常识,有丰盛的 api,有爱学习的人工智能开发者,有有趣风趣的开发者带你学 python,还有将来炽热的鸿蒙,当各种元素组合在一起,让咱们一起脑洞大开独特打造业余、好玩、有价值的开发者社区,帮忙开发者实现自我价值!

正文完
 0