python实现生成Word、docx文件的方法分析


Posted in Python onAugust 30, 2019

本文实例讲述了python实现生成Word、docx文件的方法。分享给大家供大家参考,具体如下:

http://python-docx.readthedocs.io/en/latest/index.html

生成word的利器!

一、快速开始

from docx import Document
document = Document()

1、段落

加一个段落,下面paragraph 是前面内容的光标指向,后面再该处插入一句话。

paragraph = document.add_paragraph('Lorem ipsum dolor sit amet.')
prior_paragraph = paragraph.insert_paragraph_before('Lorem ipsum')

后面加一句话

paragraph = document.add_paragraph('Lorem ipsum ')
paragraph.add_run('dolor sit amet.')

添加段落风格

document.add_paragraph('Lorem ipsum dolor sit amet.', style='ListBullet')

使用blod、italic 等等

paragraph = document.add_paragraph('Lorem ipsum ')
run = paragraph.add_run('dolor')
run.bold = True
run.italic = True
paragraph.add_run('dolor').bold = True

2、标题

level表示标题的大小

document.add_heading('The role of dolphins', level=2)

3、分页

document.add_page_break()

4、表格

table = document.add_table(rows=2, cols=2)

访问方法:

取出来,单独赋值

cell = table.cell(0, 1)
cell.text = 'parrot, possibly dead'

依然使用二维数组类似的索引。

row = table.rows[1]
row.cells[0].text = 'Foo bar to you.'
row.cells[1].text = 'And a hearty foo bar to you too sir!'

分清楚结构

for row in table.rows:
  for cell in row.cells:
    print(cell.text)

查看信息

row_count = len(table.rows)
col_count = len(table.columns)

添加一行

row = table.add_row()

动态添加表格

table = document.add_table(1, 3)
# 标题
heading_cells = table.rows[0].cells
heading_cells[0].text = 'Qty'
heading_cells[1].text = 'SKU'
heading_cells[2].text = 'Description'
# 添加内容
for item in items:
  cells = table.add_row().cells
  cells[0].text = str(item.column1)
  cells[1].text = item.column2
  cells[2].text = item.column3

5、添加图片

from docx.shared import Inches
document.add_picture('image-filename.png', width=Inches(1.25), height=Inches(1.25))

二、操作document

只能打开07之后的,会覆盖。

document = Document('existing-document-file.docx')
document.save('new-file-name.docx')

打开文件

f = open('foobar.docx', 'rb')
document = Document(f)
f.close()
# or
with open('foobar.docx', 'rb') as f:
  source_stream = StringIO(f.read())
document = Document(source_stream)
source_stream.close()
...
target_stream = StringIO()
document.save(target_stream)

三、操作text

段落居中

from docx.enum.text import WD_ALIGN_PARAGRAPH
document = Document()
paragraph = document.add_paragraph()
paragraph_format = paragraph.paragraph_format
paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER

左边整体缩进

from docx.shared import Inches
paragraph = document.add_paragraph()
paragraph_format = paragraph.paragraph_format
paragraph_format.left_indent = Inches(0.5)

右边整体缩进

from docx.shared import Pt
paragraph_format.right_indent = Pt(24)

首行缩进

paragraph_format.first_line_indent = Inches(-0.25)

从字体调节,字体大小

run = document.add_paragraph().add_run()
font = run.font
from docx.shared import Pt
font.size = Pt(10.5) # 5号字体
font.italic = True
font.underline = True

字体颜色

from docx.shared import RGBColor
font.color.rgb = RGBColor(0x42, 0x24, 0xE9)

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python使用自带的ConfigParser模块读写ini配置文件
Jun 26 Python
关于Python面向对象编程的知识点总结
Feb 14 Python
python实现微信接口(itchat)详细介绍
Oct 23 Python
Redis使用watch完成秒杀抢购功能的代码
May 07 Python
python在回调函数中获取返回值的方法
Feb 22 Python
python3.6 如何将list存入txt后再读出list的方法
Jul 02 Python
python实现LRU热点缓存及原理
Oct 29 Python
Python3.7下安装pyqt5的方法步骤(图文)
May 12 Python
Python 如何测试文件是否存在
Jul 31 Python
python爬取音频下载的示例代码
Oct 19 Python
详解用selenium来下载小姐姐图片并保存
Jan 26 Python
如何使用Python对NetCDF数据做空间相关分析
Apr 21 Python
python解析yaml文件过程详解
Aug 30 #Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
Aug 30 #Python
python数据持久存储 pickle模块的基本使用方法解析
Aug 30 #Python
python 命令行传入参数实现解析
Aug 30 #Python
Python 在OpenCV里实现仿射变换—坐标变换效果
Aug 30 #Python
python在OpenCV里实现投影变换效果
Aug 30 #Python
python 模拟贷款卡号生成规则过程解析
Aug 30 #Python
You might like
用文本作数据处理
2006/10/09 PHP
基于PHP CURL用法的深入分析
2013/06/09 PHP
PHP 清空varnish 缓存的详解(包括指定站点下的)
2013/06/20 PHP
Parse正式发布开源PHP SDK
2014/08/11 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
2016/12/15 PHP
javascritp实现input输入框相关限制用法
2007/06/29 Javascript
JavaScript入门教程 Cookies
2009/01/31 Javascript
DWZ table的原生分页浅谈
2013/03/01 Javascript
JS小功能(onmouseover实现选择月份)实例代码
2013/11/28 Javascript
javascript学习笔记(七)Ajax和Http状态码
2014/10/08 Javascript
Jquery操作Ajax方法小结
2015/11/29 Javascript
Bootstrap+jfinal实现省市级联下拉菜单
2016/05/30 Javascript
Angular的自定义指令以及实例
2016/12/26 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
JavaScript使用ZeroClipboard操作剪切板
2017/05/10 Javascript
jQuery复合事件结合toggle()方法的用法示例
2017/06/10 jQuery
JS中精巧的自动柯里化实现方法
2017/12/12 Javascript
vue2.0 elementUI制作面包屑导航栏
2018/02/22 Javascript
vue项目打包后提交到git上为什么没有dist这个文件的解决方法
2020/09/16 Javascript
python实现上传样本到virustotal并查询扫描信息的方法
2014/10/05 Python
Python实现的rsa加密算法详解
2018/01/24 Python
Pandas中把dataframe转成array的方法
2018/04/13 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
2019/10/25 Python
python的pip有什么用
2020/06/17 Python
基于logstash实现日志文件同步elasticsearch
2020/08/06 Python
python使用matplotlib绘制折线图的示例代码
2020/09/22 Python
css3之UI元素状态伪类选择器实例演示
2017/08/11 HTML / CSS
JSF面试题:如何管量web层中的Bean,用什么标签。如何通过jsp页面与Bean绑定在一起进行处理?
2012/10/05 面试题
小学开学典礼主持词
2014/03/19 职场文书
升旗仪式主持词
2014/03/19 职场文书
酒店管理求职信范文
2014/04/06 职场文书
大学生创业计划书怎么写
2014/09/15 职场文书
毕业生捐书活动倡议书
2015/04/27 职场文书
高考满分作文赏析(2篇)
2019/08/12 职场文书
SpringBoot整合MongoDB的实现步骤
2021/06/23 MongoDB
CSS三大特性继承性、层叠性和优先级详解
2022/01/18 HTML / CSS