python-docx
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的更多相关文章
- python docx文档转html页面
文章链接:https://mp.weixin.qq.com/s/uMb2ziRS1NJ1GXIjofeANg 说到word文档转html的,网上一搜一大把,各种在线word转html页面,使用起来也方 ...
- 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 手写文字识别 ...
- 读/写docx文件
安装 pip install python-docx 1.建立新Word文档 建立新文档需要调用Document对象的save方法,一个Document对象代表一个Word文档,该方法的参数是保存的文 ...
- pywin32 pywin32 docx文档转html页面 word doc docx 提取文字 图片 html 结构
https://blog.csdn.net/X21214054/article/details/78873338# python docx文档转html页面 - 程序猿tx - 博客园 https:/ ...
- 在QT C++中调用 Python并将软件打包发布(裸机可运行)
为了提高工作效率,需要一个可以自动生成多份相关联的word文档免去繁琐复制粘贴工作的软件.最后选定使用QT C++做界面和主要逻辑程序设计,对word的操作使用python写好对应的函数,然后在QT中 ...
- python 操作word
pip install python.docx from docx import DocumentDoc = Document() 解释:from 从 docx这个文件中,导入一个叫Document的 ...
- 使用PYTHON实现docx文档的读写
经常写文章的小白们会遇到这样的问题,知道想表达的意思,想出了大概描述的词汇,但就是缺乏完整漂亮的句子,也许曾经在某个地方看到过,但是找不到了.另外一种情况,阅读了大量的报告,用的时候想到了其中的某个结 ...
- python 解析docx文档的方法,以及利用Python从docx文档提取插入的文本对象和图片
首先安装docx模块,通过pip install docx或者在docx官方链接上下载安装都可以 下面来看下如何解析docx文档:文档格式如下 有3个部分组成 1 正文:text文档 2 一个表格. ...
- Python:读取 .doc、.docx 两种 Word 文件简述及“Word 未能引发事件”错误
概述 Python 中可以读取 word 文件的库有 python-docx 和 pywin32. 下表比较了各自的优缺点. 优点 缺点 python-docx 跨平台 只能处理 .docx 格式 ...
- Python将数据渲染到docx文档指定位置
超简单Python将指定数据插入到docx模板渲染并生成 最近有一个需求,制作劳动合同表,要从excel表格中将每个人的数据导入到docx劳动合同中,重复量很大,因此可以使用python高效解决.为了 ...
随机推荐
- CentOS7_JDK安装和环境变量配置
1.下载 curl -O http://download.Oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz 2.改名 mv ...
- 电脑kail linux 连接手机Nethunter,手机和电脑互传文件
1.开启nethunter的ssh 修改/etc/ssh/sshd_config 参考:解决kali linux 开启ssh服务后连接不上的问题 2.如果在手机终端修改不了(我的就是怎么也改不了),可 ...
- List Control控件
List Control控件 显示方式 属性[View]选择成[Report]. 添加成员变量 绑定变量:m_listCtrl 设置值 // 表头添加 m_listCtrl.SetExtendedSt ...
- Linux Makefile 编译速度的优化【转】
转自:https://blog.csdn.net/QQ1452008/article/details/51851801 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog. ...
- Makefile经典教程(一个很棒很清晰的讲解)【转】
转自:https://blog.csdn.net/seven_amber/article/details/70216216 该篇文章为转载,是对原作者系列文章的总汇加上标注. 支持原创,请移步陈浩大神 ...
- Linux动态频率调节系统CPUFreq之一:概述【转】-- 非常好的博客
转自:http://blog.csdn.net/droidphone/article/details/9346981 目录(?)[-] sysfs接口 软件架构 cpufreq_policy ...
- python计算最大公约数和最小公倍数
a=4 b=2 def gcd(a,b): return a if b==0 else gcd(b,a%b) def lcm(a,b): return a*b//gcd(a,b) print(gcd( ...
- div里 datapicker显示异常的情况之一
现象:datepicker控价显示一半 因为Div高度太小所以设置一个最小高度min-height这样就可以让时间控价显示完整了.
- BootStrap学习从现在开始
前言 原文链接 http://aehyok.com/Blog/Detail/6.html 当下最流行的前端开发框架Bootstrap,可大大简化网站开发过程,从而深受广大开发者的喜欢.本文总结了Boo ...
- shell script中read的用法
1.read基本读取 #!/bin/bash #testing the read command echo -n "Enter you name:" #echo -n 让用户直接在 ...