Python-docx是一个Python的第三方库,用于创建和更新微软的Word文档,国产永中Office,WPS、开源办公软件libre_office,openoffice也支持打开docx文档。
安装方式:pip install python-docx
检测是否成功:在命令行下导入docx,(不是python-docx),没有返回错误,证明安装成功。
python-docx 模块视角下的Word文档格式
Word文档格式
Python-docx模块把整个文章看作一个Document对象(以后简称doc),文档内容包括:文本,表格,图片图表等。
先说段落Paragraph对象
每个doc对象包括多个段落Paragraph对象(简称p),这些段落p对象保存在doc.paragraphs属性中,以列表形式返回。每个段落p对象由多个的块对象Run组成,存放在p.runs属性中,run是Word文档的最小单位,不能说一段话就是一个run文字块。例如下图就有4个不同的块对象。
run文字块
再说表格Table对象
在Word中的表格叫table,它和Excel中的差不多,由列、行、单元格组成。
Python-docx的文档结构概括如下:
- Document-->Paragraph-->Run
- Document-->Table-->Row/Column-->Cell
give your the code:(由黑板课爱技术详细注释)
from docx import Document
from docx.shared import Inches
# 初始化一个文档
document = Document()
# 添加标题,级别是0为标题段落,
document.add_heading('Document Title', 0)
# 添加段落
p = document.add_paragraph('A plain paragraph having some ')
p.add_run('bold').bold = True # 添加p段落对应的块,要求加粗
p.add_run(' and some ') # 继续添加run块
p.add_run('italic.').italic = True # 添加斜体块
# 添加子节标题级别可以是1-9,并且添加指定样式段落
document.add_heading('Heading, level 1', level=1)
document.add_paragraph('Intense quote', style='Intense Quote')
# 连续添加段落,指定好样式
document.add_paragraph(
'first item in unordered list', style='List Bullet'
) # 黑点样式段落
document.add_paragraph(
'first item in ordered list', style='List Number'
) #数字序列样式段落
# 添加图片,设定宽度(高度结合图片自动算出)
document.add_picture('monty-truth.png', width=Inches(1.25))
# 初始化一个记录数据
records = (
(3, '101', 'Spam'),
(7, '422', 'Eggs'),
(4, '631', 'Spam, spam, eggs, and spam')
)
#给文档 添加表格1行3列,并且赋给变量table
table = document.add_table(rows=1, cols=3)
hdr_cells = table.rows[0].cells # 表格第1行的单元格列表
hdr_cells[0].text = 'Qty' #分单元格赋值
hdr_cells[1].text = 'Id'
hdr_cells[2].text = 'Desc'
# 循环记录数据添加到指定表格
for qty, id, desc in records:
row_cells = table.add_row().cells
row_cells[0].text = str(qty)
row_cells[1].text = id
row_cells[2].text = desc
#增加分页符(就是换一页)
document.add_page_break()
# 保存文档
document.save('demo.docx')
官方生成文档图片
亲爱的网友,如果你能看懂了全局的模样,稍加锻炼,python处理Word文档的系列文章,你跳过都没有问题哦^_^,等我的实战篇章。
,