python_docx制作word文档详细使用说明【转】
目前网上对这一个库的介绍得很少,很零散,所以很多功能我是尽量参考其官网,但是官网上面很多功能目前只有说明文档,而代码并还没有及时更新,以至于按照官网上面做了,python却报错。比如:自定义表格的高度。下面,我对我在此次工作任务中,所遇到的一些基本的功能分别做一下说明与展示。我用的是python2.7
1.创建文档
|
1
2
|
from docx import Documentdocument = Document() |
若括号里面写入word文件路径,则表明打开该文件
2.添加标题
|
1
|
document.add_heading('This is my title', 0) |
但是,这个有个问题是标题下面有一条横线,对于重度强迫症的我是无法容忍的。所以我直接添加段落文字表示标题
3.添加段落文字
|
1
2
3
4
5
6
7
8
9
|
from docx.shared import RGBColorfrom docx.shared import Ptfrom docx.enum.text import WD_ALIGN_PARAGRAPHdocument.styles['Normal'].font.name = u'黑体' #可换成word里面任意字体p = document.add_paragraph()p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER #段落文字居中设置run = p.add_run(u'我添加的段落文字')run.font.color.rgb = RGBColor(54,95,145) #颜色设置,这里是用RGB颜色run.font.size = Pt(36) #字体大小设置,和word里面的字号相对应 |
4.添加图片
|
1
|
pic = document.add_picture('pic.png',width = Inches(1.5)) #图片和python文件不在同一个文件夹下面的时候,要补全文件地址 |
默认情况下,图片在文档中是左对齐的,如果要对图片进行居中显示,在网上找了很多方法都不可行,最后找到一种方法是直接加入以下代码:
|
1
2
|
last_paragraph = document.paragraphs[-1]last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER #图片居中设置 |
5.添加表格
|
1
|
table = document.add_table(rows=2, cols=3,style="Table Grid") #添加2行3列的表格 |
表格的style有很多种,默认情况下表格是没有边框的,Table Grid格式是普通的黑色边框表格,更多表格样式可以百度。但是,我们很多时候希望对表格进行更为漂亮的修改,比如自定义表格某一列的宽度,表格的高度。
|
1
2
3
4
|
from docx.shared import Inches# table.autofit = Falsecol = table.columns[1]col.width = Inches(5) #设置表格第2列宽度为Inches(5) 默认情况下表格是自动适应文档宽度 |
对于表格的高度官网上面有说明文档,但是其库函数的代码没有更新,所以找了很久才找到下面一种方法,以后官网要是更新了代码可以按照官网上面的方法进行设置更为简单一些。
|
1
2
3
4
5
6
7
8
|
from docx.oxml.ns import qnfrom docx.oxml import OxmlElementfor i in range(rows): #遍历表格的所有行 tr = table.rows[i]._tr trPr = tr.get_or_add_trPr() trHeight = OxmlElement('w:trHeight') trHeight.set(qn('w:val'), "450") trPr.append(trHeight) #表格的每一行进行高度设置,450这个值可以任意修改 |
6.表格里面添加文字
|
1
2
3
4
5
|
heading_cells = table.rows[0].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 #居中设置,默认是左对齐 |
还有一种直接对表格赋值的方式:
|
1
|
table.cell(i,j).text = u'表格文字' #在表格的i行j列设置文字,默认文字在表格中是左对齐 |
7.添加表格行
|
1
|
row = table.add_row() |
若需要对添加的行进行赋值,其方法和上面是一样的。
8.文档的保存
|
1
|
document.save('test.docx') #可以设置其他路径 |
整体代码如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
from docx import Documentfrom docx.oxml.ns import qnfrom docx.oxml import OxmlElementfrom docx.shared import RGBColorfrom docx.shared import Ptfrom docx.enum.text import WD_ALIGN_PARAGRAPHfrom docx.shared import Inches document = Document()document.add_heading('This is my title', 0)document.add_paragraph('my paragraph') document.styles['Normal'].font.name = u'黑体'p = document.add_paragraph()p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTERrun = p.add_run(u'我添加的段落文字 ')run.font.color.rgb = RGBColor(54, 95, 145)run.font.size = Pt(36) pic = document.add_picture('logo1.PNG')last_paragraph = document.paragraphs[-1]last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER # 图片居中设置 rows = 2cols = 3table = document.add_table(rows=rows, cols=cols,style = "Table Grid") # 添加2行3列的表格 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'), "450") trPr.append(trHeight) # 表格高度设置# table.autofit = Falsecol = table.columns[1]col.width = Inches(5)arr = [u'序号',u"类型",u"详细描述"]heading_cells = table.rows[0].cellsfor i in range(cols): p = heading_cells[i].paragraphs[0] run = p.add_run(arr[i]) run.font.color.rgb = RGBColor(54, 95, 145) # 颜色设置,这里是用RGB颜色 run.font.size = Pt(12) # 字体大小设置,和word里面的字号相对应 p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTERtable.cell(1, 1).text = u'表格文字'table.add_row()document.save('test1.docx') |
运行结果如下:

python_docx制作word文档详细使用说明【转】的更多相关文章
- python_docx制作word文档
一.docx模块 Python可以利用python-docx模块处理word文档,处理方式是面向对象的.也就是说python-docx模块会把word文档,文档中的段落.文本.字体等都看做对象,对对象 ...
- Android中使用POI加载与显示word文档
最近打算实现一个功能:在Android中加载显示Word文档,当然这里不是使用外部程序打开.查看一些资料后,打算采用poi实现,确定了以下实现思路: 将ftp中的word文档下载到本地. 调用poi将 ...
- C#实现通过模板自动创建Word文档的方法
原文地址:http://www.jb51.net/article/55332.htm 本文实例讲述了C#实现通过模板自动创建Word文档的方法,是非常实用的技巧.分享给大家供大家参考.具体实现方法 ...
- 还在为画“类Word文档报表”而发愁吗?
欢迎大家持续关注葡萄城控件技术团队博客,更多更好的原创文章尽在这里~~ Word 是非常强大的文档编辑工具,一些行业制式文档都是使用Word来创建的,像教育行业的申请表,履历表,审批表等,像石油业的 ...
- 【葡萄城报表】还在为画“类Word文档报表”而发愁吗?
Word 是非常强大的文档编辑工具,一些行业制式文档都是使用Word来创建的,像教育行业的申请表,履历表,审批表等,像石油业的勘探记录表,记录报告,检测报告等,如房地产业的制式合同,不仅包含大量的文 ...
- VS2005进行WORD文档开发
折腾了将近一个月的WORD文档开发终于告一段落.这件事已经很多大牛已经做过了.并且很多方法都已经非常详细,提供的资料也非常齐全.不过由于时间的久远并且较为散乱.所以我在学习时间过程中还是走了一些些弯路 ...
- MindManager导出Word文档功能介绍
Mindmanager思维导图软件作为一款能与Microsoft office软件无缝集成的思维导图软件,支持Word文档的快速导入与导出,并支持Word文档的目录生成.模板套用等,极大地方便了用户完 ...
- C#中5步完成word文档打印的方法
在日常工作中,我们可能常常需要打印各种文件资料,比如word文档.对于编程员,应用程序中文档的打印是一项非常重要的功能,也一直是一个非常复杂的工作.特别是提到Web打印,这的确会很棘手.一般如果要想选 ...
- C# 提取Word文档中的图片
C# 提取Word文档中的图片 图片和文字是word文档中两种最常见的对象,在微软word中,如果我们想要提取出一个文档内的图片,只需要右击图片选择另存为然后命名保存就可以了,今天这篇文章主要是实现使 ...
随机推荐
- 安装 protoc 的各种坑
首先下载 protoc 2.6.1 https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.g ...
- shell脚本中比较两个小数的办法
具体情况#man bc 然而对小数进行比较的相关方法有几个: 1. 自己的解决方法,判断小数点后最多有几位数(N),然后对将要比较的两个数值进行 乘与10的N次方 也就是将小数点去掉来进行比较(小数点 ...
- jar is specified twice.
Warning:Exception while processing task java.io.IOException: The same input jar [libs\afinal_0.5.1_b ...
- linux启动jmeter(二十三),执行./jmeter.sh报错解决方法(转载)
转载自 http://www.cnblogs.com/yangxia-test 1.l-bash: ./jmeter.sh: Permission denied解决办法:jmeter.sh的执行权限改 ...
- vmware 完全关闭时间同步
参考 http://blog.51cto.com/hezhang/1535577 修改.vmx文件 tools.syncTime = "FALSE" time.synchroniz ...
- yum更换阿里源
备份mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 下载新的CentOS-Base.repo ...
- 最长公共子序列hdu1503
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1503 题意:给你两个字符串,把这两个字符串合并,使合并之后的字符串最短,并且合并之后的字符之间的相对位 ...
- UVA-816.Abbott's Tevenge (BFS + 打印路径)
本题大意:给定一个迷宫,让你判断是否能从给定的起点到达给定的终点,这里起点需要输入起始方向,迷宫的每个顶点也都有行走限制,每个顶点都有特殊的转向约束...具体看题目便知... 本题思路:保存起点和终点 ...
- java 线程Thread 技术--1.5 Executor Executors,ThreadPool,Queue
Executors : Executors ,就是一个线程工具类:大部分操作线程的方法,都可以在这个工具类中就行创建,执行,调用一些线程的方法: Executor : 用于执行和提交一个runnabl ...
- 交叉编译libudev
一.交叉编译libudev下载udev-182.tar.xz 下载网址:https://mirrors.edge.kernel.org/pub/linux/utils/kernel/hotplug/ ...