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中数字以及算数运算符的相关使用
Oct 12 Python
Python 对象中的数据类型
May 13 Python
《Python学习手册》学习总结
Jan 17 Python
Python处理文本换行符实例代码
Feb 03 Python
pandas把dataframe转成Series,改变列中值的类型方法
Apr 10 Python
Python实现迭代时使用索引的方法示例
Jun 05 Python
pygame游戏之旅 添加icon和bgm音效的方法
Nov 21 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
Dec 05 Python
Python去除字符串前后空格的几种方法
Mar 04 Python
使用WingPro 7 设置Python路径的方法
Jul 24 Python
python实现BP神经网络回归预测模型
Aug 09 Python
windows系统Tensorflow2.x简单安装记录(图文)
Jan 18 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
15种PHP Encoder的比较
2007/04/17 PHP
PHP 中的批处理的实现
2007/06/14 PHP
php daodb插入、更新与删除数据
2009/03/19 PHP
php中字符集转换iconv函数使用总结
2014/10/11 PHP
php解决安全问题的方法实例
2019/09/19 PHP
JS重要知识点小结
2011/11/06 Javascript
ASP.NET jQuery 实例5 (显示CheckBoxList成员选中的内容)
2012/01/13 Javascript
使用Node.js实现HTTP 206内容分片的教程
2015/06/23 Javascript
基于JQuery打造无缝滚动新闻步骤详解
2016/03/31 Javascript
nodeJs内存泄漏问题详解
2016/09/05 NodeJs
JQuery PHP图片在线裁剪实例
2020/07/27 Javascript
vue非父子组件通信问题及解决方法
2018/06/11 Javascript
vue中的数据绑定原理的实现
2018/07/02 Javascript
vue-awesome-swiper 基于vue实现h5滑动翻页效果【推荐】
2018/11/08 Javascript
微信小程序加载机制及运行机制图解
2019/11/27 Javascript
JS实现音量控制拖动
2020/01/15 Javascript
实现一个Vue自定义指令懒加载的方法示例
2020/06/04 Javascript
[01:18:43]2014 DOTA2华西杯精英邀请赛5 24 iG VS DK
2014/05/25 DOTA
简单的Python抓taobao图片爬虫
2014/10/26 Python
Python动态加载模块的3种方法
2014/11/22 Python
Python中取整的几种方法小结
2017/01/06 Python
利用python获取当前日期前后N天或N月日期的方法示例
2017/07/30 Python
Python的mysql数据库的更新如何实现
2017/07/31 Python
python机器学习库常用汇总
2017/11/15 Python
Python并发编程协程(Coroutine)之Gevent详解
2017/12/27 Python
python sys.argv[]用法实例详解
2018/05/25 Python
Python 在OpenCV里实现仿射变换—坐标变换效果
2019/08/30 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
澳大利亚领先的运动鞋商店:Hype DC
2018/03/31 全球购物
Kate Spade澳大利亚官方网站:美国设计师手袋品牌
2019/09/10 全球购物
办公室文秘自我评价
2013/09/21 职场文书
大型演出策划方案
2014/05/28 职场文书
自动化专业大学生职业生涯规划范文:爱拚才会赢
2014/09/12 职场文书
教师学期述职自我鉴定
2019/08/16 职场文书
Redis监控工具RedisInsight安装与使用
2022/03/21 Redis
python使用BeautifulSoup 解析HTML
2022/04/24 Python