API Documentation
.docx文档的结构
Document对象表示整个文档,包含一个Paragraph对象的列表 Paragraph对象表示文档中的段落,包含一个Run对象的列表 Run对象是相同样式文本的延续,当文本的样式发生改变时,就需要一个新的Run对象
读取word文档
import docx, os
os. chdir( 'D:/python/python编程快速上手-让繁琐的工作自动化/处理Word' )
doc= docx. Document( 'demo.docx' )
paragraph= doc. paragraphs
print ( len ( paragraph) )
paragraph_0_txt= paragraph[ 0 ] . text
run1= paragraph[ 1 ] . runs
for run in run1:
print ( run. text)
有关Run对象 :对于docx文件中的一个段落,不同的位置可能存在不同的文本样式,一个Run对象包含一段具有相同样式的连续的文本。 如:" A plain paragraph with some bold and some italic ",这段话中,包含4个Run对象,第一个包含文本"A plain paragraph with some",之后文本变成了粗体,所以会产生一个新的Run对象来保存接下来的粗体文本,之后又恢复了非粗体,所以又会有第三个Run对象来保存相应的内容,最后文本变成了斜体,所以产生了第四个Run对象,来保存相应的文本与样式。
从.docx文件中取得完整的文本
import docx
def getText ( FileName, Indent= False , addBlankLine= False ) :
doc= docx. Document( FileName)
Text= [ ]
for paragraph in doc. paragraphs:
if Indent:
Text. append( ' ' + paragraph. text)
else :
Text. append( paragraph. text)
FullText= '\n\n' . join( Text) if addBlankLine else '\n' . join( Text)
return FullText
调用:
import os
os. chdir( 'D:/资料/python/python编程快速上手-让繁琐的工作自动化/处理Word' )
from ReadDocx import getText
s= getText( 'demo.docx' , addBlankLine= True , Indent= True )
print ( s)
Run属性
可以在Run对象上设置的text属性
属性 描述 bold 文本以粗体出现 italic 文本以斜体出现 underline 文本带下划线 strike 文本带删除线 double_strike 文本带双删除线 all_caps 文本以大写首字母出现 small_caps 文本以大写首字母出现,小写字母小两磅 shadow 文本带阴影 outline 文本以轮廓出现,而不是实心 rtl 文本从右至左书写 imprint 文本以刻入页面的方式出现 emboss 文本以凸出页面的方式出现
import docx, os
os. chdir( 'D:/python/python编程快速上手-让繁琐的工作自动化/处理Word' )
doc= docx. Document( 'demo.docx' )
paragraph= doc. paragraphs
print ( paragraph[ 0 ] . style)
paragraph[ 0 ] . style= 'Normal'
run1= paragraph[ 1 ] . runs
run1[ 1 ] . underline= True
run1[ 3 ] . underline= True
doc. save( 'new_demo.docx' )
写入文档
Document对象
方法或属性 描述 参数 add_heading(text=u’’, level=1) 在文档末尾添加新标题,并返回新标题的Paragraph对象 text—(str)标题的文本;level—(int)标题的样式,如果level=0,则样式设置为Title。如果level=1(或省略),则使用标题1。否则,样式将设置为“标题{level}”。如果级别超出0-9范围,则引发ValueError。 add_paragraph(text=u’’, style=None) 将文本添加到文档末尾作为一个新的段落,返回该段落的Paragraph对象 text—段落的文本内容,文本可以包含制表符(\t)字符。文本还可以包含换行符(\n)或回车符(\r),每个字符都转换为换行符 add_page_break() 添加分页符 save(path_or_stream ) 将此文档保存到path_or_stream path_or_stream—是文件系统位置的路径(字符串)或类似文件的对象 add_picture(image_path_or_stream,width = None,height = None ) 在文档末尾添加图像,根据宽度和高度缩放。 image_path_or_stream—图片文件的路径。width&height —插入图片的缩放大小,如果未指定宽度或高度,则图片以其原始尺寸显示。如果仅指定一个,它将用于计算比例因子,然后将比例因子应用于未指定的尺寸,从而保留图像的长宽比
Paragraph对象
方法或属性 描述 参数 add_run(text = None,style = None ) 将run添加到此段,其中包含文本,并具有通过样式ID style标识的字符样式,返回Run对象 text—文本,可以包含制表符(\t)字符。文本还可以包含换行符(\n)或回车符(\r),每个字符都转换为换行符。style—文本样式 insert_paragraph_before(text=None, style=None) 在该段落之前插入一个新段落,返回Paragraph对象 text——如果提供,新段落将会将其保存在一个Run对象中。style——若提供,则被用于整个段落 clear() 将段落的所有内容移除,并返回同样的段落,保留段落级别的样式
Run对象
方法或属性 描述 参数 add_break(break_type = 6 ) 添加换行符 break_ype——WD_BREAK.LINE,WD_BREAK.PAGE和 WD_BREAK.COLUMN,其中WD_BREAK是从docx.enum.text导入的(from docx.enum.text import WD_BREAK
)。 break_type默认为WD_BREAK.LINE add_picture(image_path_or_stream, width=None, height=None) 将图片添加到该Run对象的末尾 add_text(text) 将新的文本添加到该Run对象中 text将要添加的文本 clear() 删除Run对象的所有内容,并返回该对象,保留Run的所有格式 add_tab() 在run对象后添加一个制表符
from docx import Document
from docx. enum. text import WD_BREAK
doc = Document( )
doc. add_heading( 'Document title' , 0 )
paragraph = doc. add_paragraph( 'A Plain paragraph having some ' )
paragraph. add_run( 'bold' ) . bold = True
run= paragraph. add_run( ' and ' )
run. add_text( 'some ' )
print ( run. text)
paragraph. add_run( 'italic.' ) . italic = True
doc. add_heading( 'Heading, level 1' , level = 1 )
doc. add_paragraph( 'Intense quote' , style = 'Intense Quote' )
List_paragraph= doc. add_paragraph( 'fir item in ordered list' , style = 'List Number' )
List_paragraph. insert_paragraph_before( 'first item in unordered list' , style = 'List Bullet' )
records = ( ( 3 , '101' , 'Spam' ) , ( 7 , '422' , 'Eggs' ) , ( 4 , '631' , 'Spam,spam,eggs,and spam' ) )
table = doc. add_table( rows = 1 , cols = 3 )
hdr_cells = table. rows[ 0 ] . cells
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
doc. add_picture( 'Document.png' , height= 5000000 )
doc. paragraphs[ 0 ] . runs[ 0 ] . add_break( WD_BREAK. PAGE)
doc. save( 'demo_new.docx' )