当前位置: 首页 > 后端技术 > Python

使用python修改word表格数据插入图片+实例分析

时间:2023-03-26 00:06:53 Python

今天学习了word表格修改数据插入图片。单词形式的处理方式与普通文章段落不同。下面我就以我校的请假单为大家一一分析。1.导入python-docx库,在cmd中导入库pipinstallpython-docx下面是留条的格式2.读取docx文件下面是导入的模块fromdocximportDocumentfromdocx.sharedimportInches,Cm,Pt来自docx。oxml.nsimportqnfromdocx.enum.textimportWD_PARAGRAPH_ALIGNMENT//导入word操作相关模块importdatetime//获取当前日期docx=Document('C:/Users/test/Desktop/leavenotetemplate.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开始,选择调用的方法是target=table.cell(coordinates).paragraphs[单位的段落(从0开始)]比如我们要确定位置上面leavenote中的类,我们看到类在第一行,所以行标记为0,它在列的第一个位置,所以列标记为0,所以它的坐标是。细胞(0,0)。其他元素方法也是如此。有时选中的行和列可能会出现错误,可以左右一一尝试,看位置是否正确。name=table.cell(0,0).paragraphs[0]可能你对paragraphs[]的选择还有一些疑惑,那我就结合leavenote中的例子给大家解释一下。可以看到上面的leavenote的最后一个格子里面有时间填写,时间和其他段落一起在(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(图片的路径)和在表格中插入的方法同理,无非就是多了一步确定插入位置,还是以上面的leavenote为例,图片应该是在reasonforleave的下一行插入,所以位置是run=table.cell(2,1).paragraphs[1].add_run()//插入一个文本块添加图片操作图片=run.add_picture(photo_path)picture.height=Cm(4.4)//设置图片高度picture.width=Cm(6.2)//设置图片宽度7.保存文件方法为docx.save(path)8.小补充:日期ime作者仅使用库中的datetime来获取当前时间。安装datetime库pipinstalldatetime获取当前时间。importdatetimedt=datetime.datetime.now()可以用dt.year、dt.month、dt.day分别得到今天的年月日。最终的完整代码如下。这里有一个获取图片的小技巧,就是把图片直接拖到要输入的路径上,嘿嘿。fromdocximportDocumentfromdocx.sharedimportInches,Cm,Ptfromdocx.oxml.nsimportqnfromdocx.enum.textimportWD_PARAGRAPH_ALIGNMENTimportdatetimedt=datetime.datetime.now()time=str(dt.year)+'年'+str(dt.month)+'month'+str(dt.day)+'day'name=str(input('请输入您的姓名:'))photo_path=str(input('请将图片拖到此处:'))docx=Document('C:/Users/test/Desktop/leavetemplate.docx')tables=docx.tablestable=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:/用户/test/Desktop/'+name+''+time+'Leavenote'+'.docx'docx.save(path)效果如图,可以可以插入,但不方便显示。..笔者这里的代码没有填写假人和假类的批次,有兴趣的朋友可以自己尝试填写。如果你想要请假条模板,你可以评论告诉我,我会发给你。本人python初学者,文章中可能存在各种错误。希望大家看的时候能指出来,谢谢。本文转自:https://www.sdk.cn/details/djgylbOGwjlobxAN1ZSDK社区是一个中立的社区,这里有各种前端知识,丰富的API,有爱学习的人工智能开发者,有幽默的开发者带你学习python,还有以后大热的鸿蒙。当各种元素结合在一起,让我们一起敞开心扉,打造一个专业、有趣、有价值的开发者社区,帮助开发者实现自我价值!