一、安装
pip install python-docx
二、样例模版
from docx import Document
def create_doc():
doc = Document()
doc.add_heading('Hello', 0)
doc.save('./file_path/testDoc.docx')
def addContent_doc():
doc1 = Document()
# 增加标题
doc1.add_heading('1级标题', level=1)
doc1.add_heading('2级标题', level=2)
# 增加段落
doc1.add_paragraph('这是一个段落')
doc1.add_paragraph('这是一个段落,效果等同于0级标题。','Title') # 效果等于0级标题
paragraph = doc1.add_paragraph('这是一个段落特别特别特别特别特别特别特别特别特别特别特别特别特别特别特别特别特别特别特别特别特别特别特别特别长,展示自动换行效果。')
paragraph.add_run('=========》这是后续添加的内容')
paragraph = doc1.add_paragraph('这是另一个段落')
# 增加列表
doc1.add_paragraph('这是一个无序列表')
doc1.add_paragraph('AAA', style='List Bullet')
doc1.add_paragraph('BBB', style='List Bullet')
doc1.add_paragraph('CCC', style='List Bullet')
doc1.add_paragraph('这是一个有序列表')
doc1.add_paragraph('AAA', style='List Number')
doc1.add_paragraph('BBB', style='List Number')
doc1.add_paragraph('CCC', style='List Number')
# 增加引用
doc1.add_paragraph('这是一个引用', style='Intense Quote')
# 增加图片
from docx.shared import Inches
doc1.add_picture('./file_path/testPicture.jpg', width=Inches(5))
# 增加表格
table = doc1.add_table(rows=1, cols=3)
cells = table.rows[0].cells
cells[0].text = '111'
cells[1].text = '222'
cells[2].text = '333'
data = [
['AAA','BBB','CCC'],
['AAA','BBB','CCC'],
]
for i,n,w in data:
cells = table.add_row().cells
cells[0].text = i # 不可以写数字
cells[1].text = n
cells[2].text = w
doc1.save('./file_path/testDoc.docx')
def setStyle_doc():
from docx.shared import Pt, RGBColor, Inches
from docx.oxml.ns import qn
doc2 = Document()
# 设置字体
p1 = doc2.add_paragraph('This is paragraph1.')
p1.add_run('This is Content 1.1\n').bold = True
p1.add_run('This is Content 1.2\n').italic = True
p1.add_run('This is Content 1.3\n').font.size = Pt(26)
p1.add_run('This is Content 1.4\n').font.strike = True
p1.add_run('This is Content 1.5\n').font.shadow = True
p1.add_run('This is Content 1.6\n').font.color.rgb = RGBColor(255,130,71)
p1.add_run('This is Content 1.7\n').font.name = '微软雅黑'
run = p1.add_run('测试中文字体设置 1.8\n')
run.font.name = ''
run._element.rPr.rFonts.set(qn('w:eastAsia'), '微软雅黑')
# 设置段落格式
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
doc2.add_paragraph('This is paragraph2.\n').paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
doc2.add_paragraph('dafsdfadfad;lkfjas;dkljfa;sjf;jas;fja;sj;gausdfgua[esuf[aueijaf;lidj;jdfjas;ljdifja;siodjfpaijsd;fajio;sdja;ofijsd;oaijsd;ofjia;oisdjfadf]]').paragraph_format.left_indent = Inches(0.5)
doc2.add_paragraph('dafsdfadfad;lkfjas;dkljfa;sjf;jas;fja;sj;gausdfgua[esuf[aueijaf;lidj;jdfjas;ljdifja;siodjfpaijsd;fajio;sdja;ofijsd;oaijsd;ofjia;oisdjfadf]]').paragraph_format.first_line_indent = Inches(0.5)
doc2.add_paragraph('This is paragraph3.\n').paragraph_format.space_after = Pt(20)
doc2.add_paragraph('This is paragraph4.\n').paragraph_format.space_before = Pt(20)
doc2.add_paragraph('This is paragraph5.\n')
doc2.add_paragraph('This is paragraph6.\n').paragraph_format.line_spacing = 3
doc2.save('./file_path/testDoc.docx')
def read_doc():
from docx import Document
doc3 = Document('./file_path/testDoc.docx')
for para in doc3.paragraphs:
print(para.text)
for table in doc3.tables:
for row in table.rows:
for cell in row.cells:
print(cell.text)
def saveWord2Pdf_doc(wordPath, pdfPath):
'''
wordPath: word文件路径
pdfPath: 生成pdf文件路径
'''
# pip install pywin32
from win32com.client import gencache
from win32com.client import constants,gencache
word = gencache.EnsureDispatch('Word.Application')
doc = word.Documents.Open(wordPath, ReadOnly=1)
doc.ExportAsFixedFormat(pdfPath,
constants.wdExportFormatPDF,
Item = constants.wdExportDocumentWithMarkup,
CreateBookmarks = constants.wdExportCreateHeadingBookmarks)
word.Quit(constants.wdDoNotSaveChanges)
if __name__ == '__main__':
create_doc()
addContent_doc()
setStyle_doc()
read_doc()
saveWord2Pdf_doc('./file_path/testDoc.docx', './file_path/testDoc.pdf')
pass