本章介绍word自动化办公——docx库。
目录
导入库及文件
from docx import Document
a = Document(r"C:\Users\流光、月影\Desktop\docx.docx")
1. 增加段落
a.add_paragraph(text, style=None)
a.add_paragraph('新增的')
如图,会在文档的最后新增一行。
2. 保存
a.save(path_or_stream)
保存文件后,可查看效果。参数内填的是需要保存的路径。
3. 新增图片
a.add_picture(image_path_or_stream, width=None, height=None)
from docx.shared import Cm
a.add_picture(r"C:\Users\流光、月影\Desktop\pic.jpg",width=Cm(5),height=Cm(4))
新增一张图片并设置大小,其中设置大小需要导入Cm库。
4. 新增表格
a.add_table(rows, cols, style=None)
a.add_table(rows=5,cols=3)
rows为行数,cols为列数。
5. 获取所有表格
a.tables
获取到表格后,可以通过 for函数将它们一一遍历,随后可以获取行、列、单元格、单元格内容等。这里就不一一遍历了,用第一个表作试验。
(1)获取表格里的指定单元格内容
table.cell(?,?).text
table = a.tables[0]
cell = table.cell(0,1).text
print(cell)
这里的 table是文档中的第一个表格。在表格中取单元格只需 .cell(row,col)就可以。此案例中取第0行第1列。
(2)获取表格里的指定行
① table.row_cells(row)
table = a.tables[0]
cell = table.row_cells(0)
print(cell)
print(cell[2].text)
取第0行,返回一个可迭代对象,可迭代对象中每一个元素对应该行的每一个元素。可对其进行切片取出单个单元格,取第2个单元格(实际第三个)然后单元格.text即可取出单元格值。
② table.rows
table = a.tables[0]
rows = table.rows
print(rows)
返回所有行,可以对其进行切片去取行。取到行后再取单元格,单元格 .text 就可。
table = a.tables[0]
for row in table.rows:
for cell in row.cells:
print(cell.text)
这样就能把一整行输出。
(3)获取表格里的指定列
① table.column_cells(col)
table = a.tables[0]
col = table.column_cells(1)
print(col)
print(col[1].text)
取第1列,返回一个可迭代对象,可迭代对象中每一个元素对应该列的每一个元素。可对其进行切片取出单个单元格,取第2个单元格(实际第三个)然后单元格.text即可取出单元格值。
② table.columns
同理。和 table.rows用法一样。
table = a.tables[0]
for col in table.columns:
for cell in col.cells:
print(cell.text)
(4)获取单元格里的段落
cell = a.tables[0].cell(0,0)
par = cell.paragraphs[0].text
print(par)
获取段落的代码是 a.paragraphs,对于表格也一样。表格里也可以由一段段的文字组成,表格里的段落也可以通过cell.paragraphs获得。
6. 获取所有段落
paragraph.text
paragraph_11 = a.paragraphs[11]
print(paragraph_11.text)
a.paragraphs为获取所有段落。可以对其进行切片,获取单段,然后采用 .text输出内容。
7. 获取单段内行内元素
paragraph.runs
paragraph_11 = a.paragraphs[11]
for run in paragraph_11.runs:
print(run.text)
print('-'*70)
这个功能似乎有点毛病,因为它拆分成的run里,都已经不成句了,有待改善发展。此功能多,可以获取内容text、字体font、颜色color、字号size,把代码中的 .text换一换就行。
8. 在表格中插入图片
paragraph.add_run()
cell = a.tables[0].cell(0,1).paragraphs[0].add_run()
cell.add_picture(r"C:\Users\流光、月影\Desktop\电池充电速度.jpg",width=Cm(5),height=Cm(5))
a.save(r"C:\Users\流光、月影\Desktop\test.docx")
在第一个表格的第(0,1)单元格里的第一段落后插入一个元素块——图片。图片占据到了第四行是由于图片尺寸太大,把图片缩小后可看到它仅存在于(时间)这个单元格里的。
9. 删除某段落
paragraph.clear()
可见该段及该段的前后段如上,现删除该段后保存文件后查看:
par = a.paragraphs[32]
par.clear()
可见该段已经被删除。但是换行符依旧存在。