目录

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文档相关推荐

  1. itext word模板替换_【极简Python 自动化办公】Python写入Word文档

    [极简Python 自动化办公]专栏是介绍如何利用python办公,减少工作负荷.篇幅精炼,内容易懂,无论是否有编程基础,都非常适合. 在上次文章中,我们学习了[用python写入excel],这次我 ...

  2. 孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9并使用pydocx模块将结果写入word文档...

    孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 到今天终于完成了对docx模块针对 ...

  3. Python学习笔记(29)-Python创建并写入word文档

    点此查看 零基础Python全栈文章目录及源码下载 本文目录 1. 简介 2. 代码演示 1. 简介 上一篇已经介绍了python-docx模块的安装和导入,本篇直接介绍如何创建并写入word文档,需 ...

  4. chatgpt赋能python:Python如何分成两栏写入Word文档

    Python如何分成两栏写入Word文档 在进行文本排版时,有些时候我们需要将文字分成两栏来排版,这样可以让文章更加美观,易读. 本文将介绍一种使用Python将文本分成两栏写入Word文档的方法.在 ...

  5. 【Python】如何用Python实现Word文档拆分

    有时候,工作中可能会遇到以下场景:将一个含有几十篇文章(约几百至上千页)的word文件拆分为多个文件,每个文件包含一篇文章. 几百上千页的文档,手工处理实在低效,稍微打个盹儿还可能出错.好在我们有py ...

  6. 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 ...

  7. python读取word文档并做简单的批量文档筛选

    python读取word文档并做简单的批量文档筛选 最近参与了一项解析大量的word文档(试验报告形式)的工作,因为其中包含着一些对项目无意义的报告,所以要进行初步地筛选,通过查阅资料发现了pytho ...

  8. Python进行office操作 - 用Python读写Word文档入门

    目录 0.场景 1.安装python-docx模块 2.读取Word文档 3.写入Word文档 (1)全局样式介绍 (2)调整word样式 (3)创建并写入word (4)设置多段落 (5)设置标题 ...

  9. python关闭word文件_使用Python退出Word文档的问题

    这是我第一次使用这个,所以要友好:)基本上我的问题是我正在制作一个程序,用于打开许多Microsoft Word 2007文档并从该文档的某个表中读取并写入该信息的Excel文件有超过1000字的文档 ...

  10. Python提取word文档中的图片,识别图片文字之后再转存为word文档

    #!/usr/bin/env python # coding: utf-8 import zipfile #压缩包 import os #文件库 import shutil import pytess ...

最新文章

  1. PCL之C++动态内存学习
  2. Linux系统特点介绍集合
  3. 在css使用PHP/ASP代码
  4. raspberry pi_用Raspberry Pi制作婴儿监视器
  5. mysql 循环插入记录
  6. 用SQL语句复制数据表
  7. scrapy_redis爬取统计局的城乡代码,以目录文件夹形式生成,同时最后保存在excel和redis数据库中
  8. 使用Pyecharts进行全国水质TDS地图可视化全过程9:构建字典,批量生成所有省份地图
  9. 本人GitHub网址https://github.com/LH34128
  10. 零基础使用Xmind
  11. WebEx如何录制电脑内的声音
  12. oppoa5降级教程_OPPOR11S线刷降级旧版本可以吗?Colors版降到3.2没问题
  13. 数据结构与算法——23. 用嵌套列表与链表实现树结构
  14. Scrapy 豆瓣搜索页爬虫
  15. 简单介绍一下CGAN
  16. plot fplot ezplot
  17. CentOS7 闹心巴拉到生无可恋
  18. 12864LCD驱动ST7567
  19. git clone 只有.git文件夹 git status后发现文件夹全都被删除了
  20. 基于PID的直流电机调速控制系统

热门文章

  1. 远程服务器显示登录密码,远程服务器怎么知道登录密码
  2. python任务调度demo-百度贴吧签到
  3. M2增速8%处于历史地位——解读10月货币数据
  4. 所谓的飞扬档案管理软件
  5. 数学期望、方差、标准差
  6. 2022秋招笔试备考合集——银行篇(下)|智测优聘出品
  7. oracle含有特殊字符查询,Oracle特殊字符查询
  8. Java作业-圆柱体积
  9. python怎么算反三角函数_反三角函数怎么算
  10. MeGUI 压片之新手上路