Word文件处理笔记:docx, win32模块使用

一,读取Word文件

读写都使用docx库进行读取

模块下载: pip3 install python-docx
演示代码如下:

from docx import Document

# 初始化文件操作对象
path = ".\\xxx\\xxx.docx"
word = Document(path)  # 参数为路径(可以写绝对路径,也可以写相对路径)

# 读取文件内容段落
texts = word.paragraphs # 读取所有文本段落,返回列表,里面是段落对象
for text in tests:
	print(text.text)   # 使用循环按行读取,用.text将内容读出

# 读取文件段落文字块
parags = word.paragraphs # 获取所有字段
for parag in parags:
	for run in parag.runs:  # parag.runs获取字段中的所有文字块
		print(run.text)   # 输出文字块

# 读取文件中的表格
tables = word.tables  # 获取到所有表格对象,返回列表
table = tables[-1]  # 获取到具体表格对象,得到最后一个对象
for row in table.rows:   # table.rows获取到所有行
    for cell in row.cells:   # row.cells获取到每行所有列,返回为元组
        print(cell.text)
# 一些方法
print(len(table.columns))  # 获取列数
print(len(table.rows))  # 获取行数

二,写入Word的文件

演示代码如下:

from docx import Document

# 初始化
word = Document()  # 创建一个空的Word对象

# 写入文本
head1 = word.add_heading("标题")   # 添加一个默认格式标题
head1 = word.add_heading("标题",level=2)
paragraph1 = word.add_paragraph()  # 添加一个无格式,空字段
paragraph2 = word.add_paragrah("晚来天欲雪,")  # 添加一个字段
word.add_paragraph('段落', style='ListBullet')  # 添加一个带符号的字段
# 向字段中添加内容(添加文字块)
paragraph1.add_run("
十年可见春去秋来,百年可证生老病死,千年可叹王朝更替,万年可见斗转星移。
")
run = paragraoh2.add_run("能饮一杯无。")
run.add_break() # 换行
# 添加分页
word.add_page_break()  
paragraph1 = word.add_paragraph("这是新的一页") # 在新分页中添加内容

# 写入新表格
table = word.add_table(
	rows=4, cols=4, style="Table Grid"
)   # 创建一个4*4的带边框的表格
table.add_row()  # 增加行
table .cell(0, 0).merge(word_table5.cell(3, 0)) # 合并行
table.rows[0].cells[0].text = "测试" # 在第一行第一列插入数据
table.cell(1,1).text = "测试数据"  # 插入数据

# 保存
word.save("test.docx")  

三,修改内容

演示代码如下:

from docx import Document
from docx.shared import Cm

docx_word = Document("test.docx")

# 获取表对象
table = docx_word.tables[0]

table.cell(0,0).text = "测试"
table.add_row()  # 在末尾增加一行
table.add_column(Cm(3))  # 在最右侧增加一列
row = table.rows[0] # 获取表格第1行row._element.getparent().remove(row._element) # 删除

四,设置格式

演示代码如下:

# 设置字体
from docx import Document
from docx.oxml.ns import qn
from docx.shared import Pt
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT

docx_word = Document()
# 文本全局设置(设置正文)
set_font = u'宋体'
area = qn('w:eastAsia')
docx_word.styles['Normal'].font.name = set_font 
docx_word.styles['Normal'].font.size = Pt(10)
# 调用_element.rPr.rFonts.set方法设置
docx_word.styles['Normal']._element.rPr.rFonts.set(area , set_font)

# 建表
table = docx_word.add_table(2,2,style='Light Grid')

# 设置格式(使用文字块run)
# 1,表具体单元格设置
run = table.cell(1,1).paragraphs[0].add_run("测试")
run.font.name = '黑体'
run.font.size = Pt(10)
run._element.rPr.rFonts.set(qn('w:eastAsia'),  u"黑体")

table.rows[1].cells[1].text = "落霞与孤鹜齐飞"
tt = table.rows[1].cells[1].paragraphs[0].runs[0]
tt.font.name = '楷体'
tt.font.size = Pt(10)
tt.font._element.rPr.rFonts.set(qn('w:eastAsia'),  u"楷体")
# 2,设置标题样式
head_font = u'宋体'
area = qn('w:eastAsia')
run = doc.add_heading('', level=1).add_run("测试")
run.font.name = head_font 
run._element.rPr.rFonts.set(area, head_font)
# 设置字段格式
paragraph = word.add_paragraph()
run1 = paragraph.add_run("浮云游子意,落日故人心。")
run1.bold = True  # 加粗
run1.italic = True # 斜体
run1.font.name = u"Arial"
run1._element.rPr.rFonts.set(area,  u"Arial")

# 内容对齐方式
paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT  # 字段左对齐
# 表内容对齐
table.cell(1,1).paragraphs[0].paragraph_format.alignment = WD_TABLE_ALIGNMENT.CENTER

五,使用win32转化docx文件

模块下载:pip3 install pywin32
演示代码如下:

from win32com import client as wc

word = wc.Dispatch("Word.Application")

doc = word.Documents.Open(u"D:\\xxx\\xxx\\test.doc") # 绝对路径
doc.SaveAs(u"D:\\xxx\\xxx\\test.docx", 12) # 转换后的文件,12代表转换后为docx文件,绝对路径
doc.Close()
word.Quit()
内容:
	paragraphs  段落
	run      文字块

六、官网链接

docx: https://python-docx.readthedocs.io/en/latest/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值