今天学习了关于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 ,文章中可能会出现各种错误,希望大佬观看时可以指出,谢谢。
以上就是用python 修改word中表格数据,插入图片 +实例分析的详细内容,更多请关注叮当号网其它相关文章!
文章来自互联网,只做分享使用。发布者:牧草,转转请注明出处:https://www.dingdanghao.com/article/300647.html