一,读取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 文字块