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. oaracel 函数_行转列

    wm_concat(varchar2) 组函数

  2. ubuntu14.04下 Kinect V2+Ros接口安装

    1. 首先git下载代码,放到主文件夹下面 git clone https://github.com/OpenKinect/libfreenect2.git 2. 然后安装依赖项如下,最好事先编译安装 ...

  3. 为caffe添加最简单的全通层AllPassLayer

    参考赵永科的博客,这里我们实现一个新 Layer,名称为 AllPassLayer,顾名思义就是全通 Layer,“全通”借鉴于信号处理中的全通滤波器,将信号无失真地从输入转到输出. 虽然这个 Lay ...

  4. softlab对接Jenkins工程

    在Softlab上对接jenkins工程,必须先在自己的jenkins环境上配置好任务. 1.登陆到jenkins首页,比如http://10.179.175.53:8080/jenkins/ 2.点 ...

  5. Project Euler Problem7

    10001st prime Problem 7 By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see t ...

  6. 002_mtr_a network diagnostic tool

    一. mtr combines the functionality of the traceroute and ping programs in a single network diagnostic ...

  7. swoole 安装方法

    http://www.cnblogs.com/tudou1223/p/4530280.html 最近想用PHP写一个聊天网站,于是注意到了swoole这个扩展,看上它就是因为事件驱动异步非阻塞. Sw ...

  8. echarts饼图不显示数据为0的数据

    首先阐述下为什么会有这个需求,这个和echarts自身的显示效果有关. 如果你选择的展示图形为饼图,然后你的数据里有一条数据为0,那么展示的数据就为一条直线,看上去效果并不好, 会很突兀. 当然如果你 ...

  9. ECLIPSE 导入外部文件或源码包

    步骤: 点击Project->Properties->Libraries->Add External Class Folder.. ->选择你的文件路径->确定 注:如果 ...

  10. django----过滤器和自定义标签

    模板语法之过滤器 1.default:如果一个变量是false或者为空,使用给定的默认值.否则,使用变量的值.例如: <p>default过滤器:{{ li|default:"如 ...