pip install python-docx 注意不要直接下载docx包

from docx import Document
from docx.shared import RGBColor,Inches,Pt,Length
from docx.enum.text import WD_ALIGN_PARAGRAPH, WD_TAB_ALIGNMENT, WD_TAB_LEADER # 会有红色下划线报异常,不过可以正常使用
from docx.oxml.ns import qn
from docx.oxml import OxmlElement document = Document() # ===============================段落操作================================
document.add_heading('This is my title', 0) # 添加标题,但是这个标题下面会有一个横线 # 设置字体
document.styles['Normal'].font.name = u'黑体' # 可换成word里面任意字体
p = document.add_paragraph() # 设置文字对齐方式
p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER # 段落文字居中设置
# print(p.paragraph_format.alignment) # 打印对齐方式 # 设置段落的颜色及字体大小
run = p.add_run(u'我添加的段落文字')
run.font.color.rgb = RGBColor(54, 95, 145) # 颜色设置,这里是用RGB颜色
run.font.size = Pt(36) # 字体大小设置,和word里面的字号相对应 # ==========缩进 默认左侧=========
paragraph = document.add_paragraph()
paragraph.add_run(
'Indentation is specified using a Length value, such as Inches, Pt, or Cm. Negative values are valid and cause the paragraph to overlap the margin by the specified amount. A value of None indicates the indentation value is inherited from the style hierarchy. Assigning None to an indentation property removes any directly-applied indentation setting and restores inheritance from the style hierarchy:')
paragraph_format = paragraph.paragraph_format
# print(paragraph_format.left_indent)
# paragraph_format.left_indent = Inches(0.5) # 设置为0.5 单位是cm,默认数字为正,向右缩进,为负,则向左移
# print(paragraph_format.left_indent)
# print(paragraph_format.left_indent.inches) # 右侧缩进
# print(paragraph_format.right_indent)
paragraph_format.right_indent = Pt(24)
# print(paragraph_format.right_indent)
# print(paragraph_format.right_indent.pt) # 注意:此时是小写 # 首行缩进
# print(paragraph_format.first_line_indent)
paragraph_format.first_line_indent = Inches(0.25)
# print(paragraph_format.first_line_indent)
# print(paragraph_format.first_line_indent.inches) # ==========制表符==========
"""
制表符停止确定段落文本中制表符的呈现。
特别是,它指定了选项卡字符后面的文本将
开始的位置,它将如何与该位置对齐。
"""
tab_stops = paragraph_format.tab_stops
tab_stop = tab_stops.add_tab_stop(Inches(1.5))
# print(tab_stop.position)
# print(tab_stop.position.inches) # 默认左对齐,但可以通过提供WD_TAB对准枚举领导字符默认为空格,但可以通过提供WD_TAB领导枚举
tab_stop = tab_stops.add_tab_stop(Inches(1.5), WD_TAB_ALIGNMENT.RIGHT, WD_TAB_LEADER.DOTS) # leader为前导符
# print("alignment:",tab_stop.alignment,',leader:',tab_stop.leader) # ==========段落间距==========
# print(paragraph_format.space_before,paragraph_format.space_after)
paragraph_format.space_before = Pt(18) # 单位:磅
# print(paragraph_format.space_before.pt)
paragraph_format.space_after = Pt(12)
# print(paragraph_format.space_after.pt) # ==========行距==========
# print(paragraph_format.line_spacing)
# print(paragraph_format.line_spacing_rule)
paragraph_format.line_spacing = Pt(18) # 固定值18磅
# print(paragraph_format.line_spacing)
# print(paragraph_format.line_spacing_rule)
# paragraph_format.line_spacing = 1.75 # 1.75倍行间距
# print(paragraph_format.line_spacing)
# print(paragraph_format.line_spacing_rule) # ==========分页==========
"""
keep_together导致整个段落出现在同一页上,如果否则会在两页之间中断,则在段落之前发出一个分页。 keep_with_next将段落保存在与下一段相同的页面上。例如,这可以用于将节标题保持在与节的第一段相同的页面上。 page_break_before使段落放置在新页的顶部。这可以在章节标题中使用,以确保章节从新页面开始。 widow_control断开一页,以避免将段落的第一行或最后一行与段落的其余部分放在单独的页面上。
"""
# print(paragraph_format.keep_together)
paragraph_format.keep_with_next = True
# print(paragraph_format.keep_with_next)
paragraph_format.page_break_before = False
# print(paragraph_format.page_break_before) # ===============================添加图片================================
pic = document.add_picture('1.jpg', width=Inches(1.5)) # 图片和python文件不在同一个文件夹下面的时候,要补全文件地址
# 图片默认左对齐,要使图片居中对齐还需要创键一个新的对象
last_paragraph = document.paragraphs[-1] # 段落属性,在这里代表每一行,一共三行,-1为最后一行
last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER # 图片居中设置 # ===============================添加表格=================================
rows = 3
cols = 3
table = document.add_table(rows=rows, cols=cols, style="Table Grid") # 添加2行3列的表格
"""
表格的style有很多种,默认情况下表格是没有边框的,
Table Grid格式是普通的黑色边框表格,更多表格样式
可以百度。但是,我们很多时候希望对表格进行更为漂
亮的修改,比如自定义表格某一列的宽度,表格的高度。
""" # 设置表格宽度
# table.autofit = False # 关闭表格的自适应宽度,其实与下面两条语句共同执行的话,这条语句可以省略
# col = table.columns[0] # 获取表格第1列
# col.width = Inches(3) # 设置表格第1列宽度为Inches(5) 默认情况下表格是自动适应文档宽度 # 设置表格高度
for i in range(rows): # 遍历表格的所有行
tr = table.rows[i]._tr # 获取表格的每一行
trPr = tr.get_or_add_trPr() # 获取或添加表行属性
trHeight = OxmlElement('w:trHeight') # 获取高度属性
trHeight.set(qn('w:val'), "") # 设置高度
trPr.append(trHeight) # 给表格添加高度属性,表格的每一行进行高度设置,450这个值可以任意修改 # 向表格中添加文字
arr = [u'序号', u'类型', u'详情描述']
arr2 = ['', 'python', '列表']
arr3 = ['', 'java', '数组'] # heading_cells = table.rows[0].cells # 将表格的第一行设置为表头
# row2 = table.rows[1].cells
# for i in range(cols): # cols为表格的列数
#
#
#
# # 表头
# p = heading_cells[i].paragraphs[0] # 利用段落功能添加文字
# run = p.add_run(arr[i]) # 把表头放在一个数组里面的,这样方便赋值
# p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER # 居中设置,默认是左对齐
#
# # 内容第一行
# r2 = row2[i].paragraphs[0]
# r2.add_run(arr2[i])
# r2.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER # 居中设置,默认是左对齐 # 封装成函数
def insert_data(num, cols, list):
"""
:param num: 表格的第几行
:param cols: 表格列数
:param list: 数据
:return:
"""
row = table.rows[num - 1].cells # 获取到表格的某一行
for i in range(cols): # 遍历表格列数
r = row[i].paragraphs[0]
r.add_run(list[i])
r.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER # 居中设置,默认是左对齐 insert_data(1, cols, arr)
insert_data(2, cols, arr2)
insert_data(3, cols, arr3) # 下面两个不推荐使用,这样会造成表格格式的混乱
# 直接给表中的某一个单元格赋值
# table.cell(1, 1).text = 'c' # 在表格的i行j列设置文字,默认文字在表格中是左对齐
# table.cell(1, 2).text = '数组(难)' # 在表格最下方添加行
# table.add_row() document.save('test.docx')

python-docx的更多相关文章

  1. python docx文档转html页面

    文章链接:https://mp.weixin.qq.com/s/uMb2ziRS1NJ1GXIjofeANg 说到word文档转html的,网上一搜一大把,各种在线word转html页面,使用起来也方 ...

  2. Atitit s2018.2 s2 doc list on home ntpc.docx  \Atiitt uke制度体系 法律 法规 规章 条例 国王诏书.docx \Atiitt 手写文字识别 讯飞科大 语音云.docx \Atitit 代码托管与虚拟主机.docx \Atitit 企业文化 每日心灵 鸡汤 值班 发布.docx \Atitit 几大研发体系对比 Stage-Gat

    Atitit s2018.2 s2 doc list on home ntpc.docx \Atiitt uke制度体系  法律 法规 规章 条例 国王诏书.docx \Atiitt 手写文字识别   ...

  3. 读/写docx文件

    安装 pip install python-docx 1.建立新Word文档 建立新文档需要调用Document对象的save方法,一个Document对象代表一个Word文档,该方法的参数是保存的文 ...

  4. pywin32 pywin32 docx文档转html页面 word doc docx 提取文字 图片 html 结构

    https://blog.csdn.net/X21214054/article/details/78873338# python docx文档转html页面 - 程序猿tx - 博客园 https:/ ...

  5. 在QT C++中调用 Python并将软件打包发布(裸机可运行)

    为了提高工作效率,需要一个可以自动生成多份相关联的word文档免去繁琐复制粘贴工作的软件.最后选定使用QT C++做界面和主要逻辑程序设计,对word的操作使用python写好对应的函数,然后在QT中 ...

  6. python 操作word

    pip install python.docx from docx import DocumentDoc = Document() 解释:from 从 docx这个文件中,导入一个叫Document的 ...

  7. 使用PYTHON实现docx文档的读写

    经常写文章的小白们会遇到这样的问题,知道想表达的意思,想出了大概描述的词汇,但就是缺乏完整漂亮的句子,也许曾经在某个地方看到过,但是找不到了.另外一种情况,阅读了大量的报告,用的时候想到了其中的某个结 ...

  8. python 解析docx文档的方法,以及利用Python从docx文档提取插入的文本对象和图片

    首先安装docx模块,通过pip install docx或者在docx官方链接上下载安装都可以 下面来看下如何解析docx文档:文档格式如下 有3个部分组成 1 正文:text文档 2 一个表格. ...

  9. Python:读取 .doc、.docx 两种 Word 文件简述及“Word 未能引发事件”错误

    概述 Python 中可以读取 word 文件的库有 python-docx 和 pywin32. 下表比较了各自的优缺点.   优点 缺点 python-docx 跨平台 只能处理 .docx 格式 ...

  10. Python将数据渲染到docx文档指定位置

    超简单Python将指定数据插入到docx模板渲染并生成 最近有一个需求,制作劳动合同表,要从excel表格中将每个人的数据导入到docx劳动合同中,重复量很大,因此可以使用python高效解决.为了 ...

随机推荐

  1. 使用xmanager图形化远程连接rhel6

    使用xmanager图形化远程连接rhel6 xmanager中Xbrowser可以提供图形化桌面远程.和vnc比,可以类似于本地一样用户切换. 操作步骤: linux服务端: 1:查看/etc/in ...

  2. Linux安装后首次设置root密码

    ① 1.sudo password root //给指定用户设置密码 2.sudo passwd root //给指定用户设置密码 ②su root //切换到指定用户

  3. Windows系统FTP Shell

    ftp open 10.0.0.0.2 21101 user passwd ls cd pwd delete get /home/err.log Error.log put err.log /home ...

  4. [转]GDB-----1.GDB概述

    作者: liigo原文链接: http://blog.csdn.net/liigo/archive/2006/01/17/582231.aspx 1.前言 本文写给主要工作在Windows操作系统下而 ...

  5. ES系列六、ES字段类型及ES内置analyzer分析

    一.背景知识 在Es中,字段的类型很关键: 在索引的时候,如果字段第一次出现,会自动识别某个类型,这种规则之前已经讲过了. 那么如果一个字段已经存在了,并且设置为某个类型.再来一条数据,字段的数据不与 ...

  6. igmpproxy启动时错误:There must be at least 2 Vif's where one is upstream.

    openwrt 下启动igmpproxy时报错 # /etc/init.d/igmpproxy start Not starting instance igmpproxy::instance1, an ...

  7. iframe传递参数问题

    在页面中嵌入了iframe,如果需要传递参数到iframe中 1.通过将参数嵌入到url中,在iframe中使用${param.xxx}可以获取 2.通过将参数存入到session中,在iframe中 ...

  8. python风流史

    python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言 ...

  9. [学习笔记]JS 数组Array push相关问题

    前言: 今天用写了一个二维数组,都赋值为零,然后更新其中一个值,结果和预期是不一样,会整列的相同位置都是同一个值. 1.用Chrome的控制台样例如下: arrs[2][2] =1的赋值,竟然是三个数 ...

  10. 简单对比 Libevent、libev、libuv

    Libevent.libev.libuv三个网络库,都是c语言实现的异步事件库Asynchronousevent library). 异步事件库本质上是提供异步事件通知(Asynchronous Ev ...