python-docx 常用方法
1. 引用库
from docx import Document
2. 新建一个空 docx
document = Document()
3. 保存 docx
document.save(‘c:/test2.docx’)
4. 打开指定的 docx
document = Document(‘c:/test.docx’)
5. 在末尾增加一个段落 paragraph
paragraph = document.add_paragraph(‘Lorem ipsum dolor sit amet.’)
6. 插入段落
使用一个段落作为“光标”,并在其上直接插入一个新段落:在段落 paragraph 前增加一个段落 prior_paragraph
prior_paragraph = paragraph.insert_paragraph_before(‘Lorem ipsum’)
7. 添加标题
document.add_heading(‘The REAL meaning of the universe’)
增加一个级别为 2 的标题
document.add_heading(‘The role of dolphins’, level=2)
8. 添加分页符
document.add_page_break()
9. 添加表
table = document.add_table(rows=2, cols=2)
访问单元格:在 table 表的 0 行 1 列
cell = table.cell(0, 1)
设置单元格文本
cell.text = ‘parrot, possibly dead’
访问 table 表整行
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()
示例:
get table data
items = get_things_from_database_or_something()
add table
table = document.add_table(1, 3)
populate header row
heading_cells = table.rows[0].cells
heading_cells[0].text = ‘Qty’
heading_cells[1].text = ‘SKU’
heading_cells[2].text = ‘Description’
add a data row for each item
for item in items:
cells = table.add_row().cells
cells[0].text = str(item.qty)
cells[1].text = item.sku
cells[2].text = item.desc
预格式化表格样式
table.style = ‘LightShading-Accent1’
10. 添加图片
document.add_picture(‘image-filename.png’)
图像大小设置
from docx.shared import Inches
document.add_picture(‘image-filename.png’, width=Inches(1.0))
11. 应用段落样式
创建段落时定义样式
document.add_paragraph(‘Lorem ipsum dolor sit amet.’, style=‘ListBullet’)
创建段落时修改样式
paragraph = document.add_paragraph(‘Lorem ipsum dolor sit amet.’)
paragraph.style = ‘ListBullet’
12. 应用粗体和斜体
中间有一个粗体字的段落需要三个段落,一个正常的段落,一个包含该单词的粗体,以及另一个正常的段落
paragraph = document.add_paragraph(’Lorem ipsum ’)
paragraph.add_run(‘dolor sit amet.’)
Run 对象既有.bold 和.italic 属性
paragraph = document.add_paragraph(’Lorem ipsum ’)
run = paragraph.add_run(‘dolor’)
run.bold = True
paragraph.add_run(’ sit amet.’)
可以对结果集粗体或斜体正确的.add_run()
paragraph.add_run(‘dolor’).bold = True
is equivalent to:
run = paragraph.add_run(‘dolor’)
run.bold = True
except you don’t have a reference to run
afterward
它不是必须提供的文字给.add_paragraph() 方法。这可以使你的代码更简单
paragraph = document.add_paragraph()
paragraph.add_run(’Lorem ipsum ’)
paragraph.add_run(‘dolor’).bold = True
paragraph.add_run(’ sit amet.’)
13. 应用字符样式
可使用 add_run 创建段落时指定字符样式
paragraph = document.add_paragraph(’Normal text, ’)
paragraph.add_run(‘text with emphasis.’,‘Emphasis’)
也可以创建段落后指定字符样式
paragraph = document.add_paragraph(’Normal text, ’)
run = paragraph.add_run(‘text with emphasis.’)
run.style = ‘Emphasis’
14. 读写 docx 文件
新建或打开文件,若指定路径则是打开文档;若没有指定路径则是新建文档
引用库
import docx
新建文档
doc_new = docx.Document()
读取文档
doc = docx.Document(ur’C:\1.docx’)
保存文档
doc.save(path_or_stream)
对象集合
python-docx 包含了 word 文档的相关对象集合。
段落集合
doc.paragraphs
表格集合
doc.tables
节 集合
doc.sections
样式集合
doc.styles
内置图形
doc.inline_shapes
插入段落
doc.add_paragraph(u’第一段’,style=None) #插入一个段落,文本为“第一段”
默认是不应用样式,这里也可以不写 style 参数,或者指定一个段落样式
doc.add_paragraph(u’第二段’,style=‘Heading
2’)
这些样式都是 word 默认带有的样式,可以直接罗列出来有哪些段落样式
新增样式
from docx import Document
from docx.shared import RGBColor #这个是 docx 的颜色类
新建文档
doc = Document()
新增样式 (第一个参数是样式名称,第二个参数是样式类型:1 代表段落;2 代表字符;3 代表表格)
style = doc.styles.add_style(‘style name 1’, 2)
设置具体样式
(修改样式字体为蓝色,当然还可以修改其他的,大家自己尝试)
style.font.color.rgb = RGBColor(0x0, 0x0, 0xff)
应用字符样式
字符自然是在段落里面的,可以采用下面方法给段落追加文字和设置字符样式
插入一个空白段落
p = doc.add_paragraph('')
p.add_run(‘123’, style=“Heading 1 Char”)
p.add_run(‘456’)
p.add_run(‘789’, style=“Heading 2 Char”)
这样一个段落就应用了两个字符样式,中间“456”就没应用样式
print p.text # 输出结果是 u’123456789’ 也还是连续的
设置字体。
当然可以不用通过设置样式对某些字进行设置,也可以直接设置。
p = doc.add_paragraph('')
r = p.add_run(‘123’)
r.font.bold = True # 加粗
r.font.italic = True # 倾斜 等等…
表格操作。表格也是经常用到的一种对象类型。
新建一个 2x3 的表格,style 可以不写
table=doc.add_table(rows=2,cols=3,style=None)
可以用 table 的 rows 和 columns 得到这个表格的行数和列数
print len(table.rows)
print len(table.columns)
遍历表格
for row in table.rows:
row.cells[0].text = ‘1’
#print row.cells[0].text
新增行或列
table.add_row()
table.add_column()
15. 获取段落文本
doc = Document(r’C:\test.docx’)
变量 doc 为 docx.document.Document 类型
doc.paragraphs 为 list 类型
for i in doc.paragraphs:
temp_str=i.text
#变量 temp_str 为 str 类型
print(temp_str)
666
强!
厉害
👍
重新排版 😄
总结的非常好。
内容很全 👍
你把帖子内容格式稍改下就完美了,帮助里有哈哈