from docx import Document # 导入docx基础库
from docx.enum.style import WD_STYLE_TYPE # 样式库
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT # 对齐式库
from docx.shared import Pt # 单独调整几个字的样式
import os
import time
class WordOperate:
"""
World相关操作
"""
def init(self, failename=None):
"""
初始化函数
:failename:文件路径
"""
self.failename = failename
self.save_path = os.path.join(os.getcwd(), str(time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))), r'new_doc'+r'.docx')
if failename is None:
self.doc = Document()
else:
self.doc = Document(self.failename)
def read_text(self):
"""
读取文档中text段落,返回list
"""
try:
paragraph_list = []
for paragraph in self.doc.paragraphs:
paragraph_list.append(paragraph.text)
return paragraph_list
except Exception as e:
return print(e)
def read_table(self):
"""
读取文档中表格,返回list
返回格式[table[行[列数据]]]
"""
try:
tables = self.doc.tables
table_rsult = []
for i in range(len(tables)):
table = tables[i]
table_text = WordOperate.read_table_rows(table)
table_rsult.append(table_text)
return table_rsult
except Exception as e:
return print(e)
def read_table_rows(table):
"""
读取table所有行数据
"""
reust = []
for rows in range(len(table.rows)):
result_rows = WordOperate.read_table_columns(rows, table)
reust.append(result_rows)
return reust
def read_table_columns(rows, table):
"""
读取一行所有列数据
"""
result_rows = []
for columns in range(len(table.columns)):
result_row = table.cell(rows, columns).text
result_rows.append(result_row)
return result_rows
def write_heading(self, text, level=0):
"""
添加标题
:text:标题内容
:level:标题级别,默认为0
"""
self.doc.add_heading(text, level=level)
def write_paragraph(self, text, style='Normal'):
"""
添加段落
:text:段落内容
:style:段落样式,默认Normal
查看样式调用 search_paragraph_styles
"""
paragraph = self.doc.add_paragraph(text, style=style)
return paragraph
def write_text(self, text, paragraph, style=None):
"""
段落后添加文字
:text:文字内容
:paragraph:需要追加文字的段落
:style:文字样式,默认Title Char
查看样式调用 search_character_styles
"""
if style is None:
text = paragraph.add_run(text)
else:
text = paragraph.add_run(text, style=style)
return text
def search_paragraph_styles(self):
"""
查看段落样式调用
"""
print('以下为段落样式:')
for s in self.doc.styles:
if s.type == WD_STYLE_TYPE.PARAGRAPH:
print(s.name)
def search_character_styles(self):
"""
查看字体样式调用
"""
print('以下为字体样式:')
for s in self.doc.styles:
if s.type == WD_STYLE_TYPE.CHARACTER:
print(s.name)
def write_picture(self):
pass
def write_table(self):
pass
def style_paragraph(self):
pass
def style_character(self):
pass
def save_word(self):
if os.path.exists(self.save_path) is True:
pass
else:
os.mkdir(os.path.join(os.getcwd(), str(time.strftime('%Y%m%d%H%M%S',time.localtime(time.time())))))
self.doc.save(self.save_path)
return print('文件保存成功,存储路径为:', self.save_path)
if name == "__main__":
docx = WordOperate(r'C:\Users\14836\OneDrive\Python学习\test\file\新建 Microsoft Word 文档.docx')
paragraph = doc.write_paragraph('5456465', 'ListNumber')
doc.write_text('wqqwqw', paragraph, 'Title Char')
docx.save_word()