Python写入word文档
目录
1.写入简单段落、插入图片
2.设置字体
设置全文字体:
设置段落字体:
3.插入表格并填充内容、设置对齐方式
4.设置页面布局
1.写入简单段落、插入图片
import docx
from docx import shared
from docx.enum.text import WD_PARAGRAPH_ALIGNMENTdoc=docx.Document() #创建内存中的word文档对象
doc.add_paragraph("这是第一段") #写入若干段落
doc.add_paragraph("这是第二段")
doc.add_picture('img.png',width=shared.Cm(10)) #插入图片,设置宽度为10cm
doc.paragraphs[-1].alignment=WD_PARAGRAPH_ALIGNMENT.CENTER #设置最后一段居中对齐,这里可以使图片居中
doc.save("E:\desktop\test.docx") #保存才能看到结果
在保存时如果遇到下面类似的错误:
OSError: [Errno 22] Invalid argument: 'E:\\desktop\try.docx'
尝试更改文件名,因为文件名与反斜线可能组成了转义字符。也可以在路径名前加入r来取消转义字符的作用:
file.save(r"E:\desktop\try.docx")
2.设置字体
设置全文字体:
import docx
from docx.shared import Pt
from docx.oxml.ns import qndoc=docx.Document()
doc.styles['Normal'].font.name = 'Times New Roman'
doc.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
doc.add_paragraph('这是中文,this is English')
doc.save('d:/Desktop/test4.docx')
设置段落字体:
import docx
from docx.shared import Pt
from docx.oxml.ns import qndoc=docx.Document()p1 = doc.add_paragraph()
text1 = p1.add_run("第一段文字是中文;The first paragraph is in Chinese")
text1.font.size = Pt(15) # 设置字体大小
text1.bold = True # 设置字体是否加粗
text1.font.name = 'Times New Roman' # 设置西文字体
text1.element.rPr.rFonts.set(qn('w:eastAsia'), '宋体') # 设置中文字体p2 = doc.add_paragraph()
text2 = p2.add_run("第二段文字是英文;The second paragraph is in English")
text2.font.size = Pt(10)
text2.bold = False
text2.font.name = 'Times New Roman'
text2.element.rPr.rFonts.set(qn('w:eastAsia'), '黑体')doc.save('d:/desktop/test3.docx')
3.插入表格并填充内容、设置对齐方式
import docx
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_ALIGN_VERTICAL
from docx import shared
from docx.shared import Cm,Inches,Ptdoc=docx.Document()
table=doc.add_table(rowNums,colNums) #括号内为插入表格的行列数
#可用len(table.rows)、len(table.columns)获取表格的行列数
table.cell(0,0).text='1' #在第一行第一列的单元格填充字符1,表格的行列都从0开始计数#设置单元格对齐方式为水平居中|左对齐|右对齐|两端对齐
table.cell(0,0).paragraphs[0].paragraph_format.alignment=WD_ALIGN_PARAGRAPH.CENTER|WD_ALIGN_PARAGRAPH.LEFT|WD_ALIGN_PARAGRAPH.RIGHT|WD_ALIGN_PARAGRAPH.DISTRIBUTE#设置单元格对齐方式为垂直居中|顶部对齐|底部对齐
table.cell(0,0).vertical_alignment=WD_ALIGN_VERTICAL.CENTER|WD_ALIGN_VERTICAL.TOP|WD_ALIGN_VERTICAL.BOTTOM
#以下为在单元格(0,1)中插入图片,并设置宽度为5cm(当只设置图片一个方向的尺寸(宽或高)时,另一方向会自动缩放)
table.cell(0,1).paragraphs[-1].add_run().add_picture(r“imgPath\img.tif",width=shared.Cm(5))
#在单元格(0,2)中插入图片,并设置高度为5 Inches:
table.cell(0,2).paragraphs[-1].add_run().add_picture(r“imgPath\img2.tif",height=shared.Inches(5))'''此句也可用多条语句替换:p=table.cell(0,1).paragraphs[-1]run=p.add_run()run.add_picture(r“imgPath\img.tif",width=docx.shared.Cm(5))
'''
#在表格最后插入一行(最下方)和一列(最右侧),插入列时需要指定宽度(这里为5cm)
table.add_row()
table.add_column(Cm(5))#行列的索引
row=table.rows[1]
column=table.columns[1]
#设置行高列宽
table.rows[1].height=Cm(1)
table.cell(1,2).width=Cm(3) #同列单元格宽度相同,不同时以最大宽度为准
#行的删除:可通过row._element.getparent().remove()函数实现
row._element.getparent().remove(row._element)
#列的删除:列没有像行那样的remove()函数,可通过遍历列中的单元格进行删除.但表格中的cell按行存储,删除第i行的某个单元格后,每行的cell数并不变化,逻辑上第i+1行的第一个单元格会补到第i行的最后一个单元格,所以与外观不同。
for cell in column.cells: cell._element.getparent().remove(cell._element) doc.save("filename.docx")
4.设置页面布局
页面方向有横向与竖向,新建Document时,默认的是竖向页面,要设置为我们目标的横向,需要设置三个参数,分别为section.orientation, section.page_width, section.page_height。
注:如果只设置参数section.orientation=WD_ORIENT.LANDSCAPE,不设置另外两个参数,页面方向并不发生变化;如果设置了section.page_height,section.page_width两个参数,不设置section.orientation,页面会根据前两个参数设置页面尺寸进行调整。
import docx
from docx.shared import Cm,Inches,Pt
from docx.enum.section import WD_ORIENT
doc=docx.Document()
sec=doc.sections #获取文档章节列表,新建的文档只有一节
sec0=sec[0] #将第一节命名为sec0
#新建文档默认为竖向,改为横向须设置三个参数:
sec0.orientation=WD_ORIENT.LANDSCAPE #设置页面方向为横向须同时设置高度和宽度才有用
sec0.page_height=Cm(21)
sec0.page_width=Cm(29.7)
#若只设置第一个而不设置另外两个,则页面方向不发生变化;如果只设置后两个,则页面的宽和高会改变,但仍为纵向sec0.left_margin=shared.Cm(1) #设置页边距均为1cm
sec0.right_margin=shared.Cm(1)
sec0.top_margin=shared.Cm(1)
sec0.bottom_margin=shared.Cm(1)doc.save("filename.docx")
练习:以下程序的功能是将一个文件夹中的图片以表格形式排列在word中:
import docx
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_ALIGN_VERTICAL
from docx.enum.section import WD_ORIENT
from docx import shared
from docx.shared import Cm,Inches,Pt
import os
doc=docx.Document()
sec=doc.sections
sec0=sec[0]
sec0.orientation=WD_ORIENT.LANDSCAPE
sec0.page_height=Cm(21)
sec0.page_width=Cm(29.7)
sec0.left_margin=shared.Cm(1) #设置页边距均为1cm
sec0.right_margin=shared.Cm(1)
sec0.top_margin=shared.Cm(1)
sec0.bottom_margin=shared.Cm(1)imgPath=r"imgPath\\"
imgList=[""]+ os.listdir(imgPath)
rowNums=eval(input("请输入包含图片标题在内的行数:"))
colNums=eval(input("请输入列数:"))
table=doc.add_table(rowNums,colNums)
#设置单元格对齐方式为水平居中
table.cell(0,0).paragraphs[0].paragraph_format.alignment=WD_ALIGN_PARAGRAPH.CENTER#设置单元格对齐方式为垂直居中
table.cell(0,0).vertical_alignment=WD_ALIGN_VERTICAL.CENTER
for rowNum in range(1,rowNums+1,2):for colNum in range(1,colNums+1):if (rowNum-1)*colNums/2+colNum>len(imgList)-1:breakelse:try:imgName=imgList[int((rowNum-1)*colNums/2)+colNum]total_imgPath=imgPath+imgNametable.cell(rowNum-1,colNum-1).paragraphs[-1].add_run().add_picture(total_imgPath,width=shared.Cm(27/colNums))table.cell(rowNum,colNum-1).text=imgNameexcept: #如果有其它类型的文件则忽略passif (rowNum-1)*colNums/2+colNum>len(imgList)-1:break
doc.save(r"e:\desktop\Picture.docx")
ref:https://blog.csdn.net/woshisangsang/article/details/75304228
python 取消转义字符作用
Python-docx 读写 Word 文档:插入图片、表格,设置表格样式,章节,页眉页脚等
利用python自动写Word文档(二)——用python-docx修改页面方向及字体 - 简书
利用python自动写Word文档(三)——用Python-docx修改表格 - 简书
python-docx添加和删除表格行、列 - 天涯海角路 - 博客园
https://zhuanlan.zhihu.com/p/88151371
python-docx设置图片大小和对齐方式 | 码农家园
Python-docx 整体修改或者部分修改文字的大小和字体类型_Leeoo_lyq的博客-CSDN博客_python 修改docx
Python写入word文档相关推荐
- itext word模板替换_【极简Python 自动化办公】Python写入Word文档
[极简Python 自动化办公]专栏是介绍如何利用python办公,减少工作负荷.篇幅精炼,内容易懂,无论是否有编程基础,都非常适合. 在上次文章中,我们学习了[用python写入excel],这次我 ...
- 孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9并使用pydocx模块将结果写入word文档...
孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 到今天终于完成了对docx模块针对 ...
- Python学习笔记(29)-Python创建并写入word文档
点此查看 零基础Python全栈文章目录及源码下载 本文目录 1. 简介 2. 代码演示 1. 简介 上一篇已经介绍了python-docx模块的安装和导入,本篇直接介绍如何创建并写入word文档,需 ...
- chatgpt赋能python:Python如何分成两栏写入Word文档
Python如何分成两栏写入Word文档 在进行文本排版时,有些时候我们需要将文字分成两栏来排版,这样可以让文章更加美观,易读. 本文将介绍一种使用Python将文本分成两栏写入Word文档的方法.在 ...
- 【Python】如何用Python实现Word文档拆分
有时候,工作中可能会遇到以下场景:将一个含有几十篇文章(约几百至上千页)的word文件拆分为多个文件,每个文件包含一篇文章. 几百上千页的文档,手工处理实在低效,稍微打个盹儿还可能出错.好在我们有py ...
- python获取word页数_使用Python的word文档的页数(Number of pages of a word document with Python)...
使用Python的word文档的页数(Number of pages of a word document with Python) 有没有办法用Python有效地获得word文档(.doc,.doc ...
- python读取word文档并做简单的批量文档筛选
python读取word文档并做简单的批量文档筛选 最近参与了一项解析大量的word文档(试验报告形式)的工作,因为其中包含着一些对项目无意义的报告,所以要进行初步地筛选,通过查阅资料发现了pytho ...
- Python进行office操作 - 用Python读写Word文档入门
目录 0.场景 1.安装python-docx模块 2.读取Word文档 3.写入Word文档 (1)全局样式介绍 (2)调整word样式 (3)创建并写入word (4)设置多段落 (5)设置标题 ...
- python关闭word文件_使用Python退出Word文档的问题
这是我第一次使用这个,所以要友好:)基本上我的问题是我正在制作一个程序,用于打开许多Microsoft Word 2007文档并从该文档的某个表中读取并写入该信息的Excel文件有超过1000字的文档 ...
- Python提取word文档中的图片,识别图片文字之后再转存为word文档
#!/usr/bin/env python # coding: utf-8 import zipfile #压缩包 import os #文件库 import shutil import pytess ...
最新文章
- PCL之C++动态内存学习
- Linux系统特点介绍集合
- 在css使用PHP/ASP代码
- raspberry pi_用Raspberry Pi制作婴儿监视器
- mysql 循环插入记录
- 用SQL语句复制数据表
- scrapy_redis爬取统计局的城乡代码,以目录文件夹形式生成,同时最后保存在excel和redis数据库中
- 使用Pyecharts进行全国水质TDS地图可视化全过程9:构建字典,批量生成所有省份地图
- 本人GitHub网址https://github.com/LH34128
- 零基础使用Xmind
- WebEx如何录制电脑内的声音
- oppoa5降级教程_OPPOR11S线刷降级旧版本可以吗?Colors版降到3.2没问题
- 数据结构与算法——23. 用嵌套列表与链表实现树结构
- Scrapy 豆瓣搜索页爬虫
- 简单介绍一下CGAN
- plot fplot ezplot
- CentOS7 闹心巴拉到生无可恋
- 12864LCD驱动ST7567
- git clone 只有.git文件夹 git status后发现文件夹全都被删除了
- 基于PID的直流电机调速控制系统